Article ID: 151894
Article Last Modified on 11/21/2006
APPLIES TO
- Microsoft Foundation Class Library 4.2, when used with:
- Microsoft Visual C++ 4.0 Standard Edition
- Microsoft Visual C++ 4.1 Subscription
This article was previously published under Q151894
SYMPTOMS
Accessing the CToolTipCtrl for a CToolBar with CBRS_TOOLTIPS style, using
GetToolBarCtrl() and subsequently using that pointer to call GetToolTips(),
returns a NULL value.
CAUSE
GetToolTips() returns the pointer to a CToolTipCtrl associated specifically
with the CToolBar. The CToolTipCtrl created for a CToolBar by setting the
CBRS_TOOLTIPS style is not specific to the CToolBar, but rather, is MFC's
CToolTipCtrl common to the entire application.
RESOLUTION
The common CToolTipCtrl is kept as a part of the MFC thread state
information. To access the MFC's common CToolTipCtrl, access m_pToolTip
public member of the current thread state:
_AFX_THREAD_STATE* pThreadState = AfxGetThreadState();
CToolTipCtrl* pToolTip = pThreadState->m_pToolTip;
STATUS
This behavior is by design.
MORE INFORMATION
In order to provide ToolTip support for a CToolBar, the CBRS_TOOLTIPS style
has to be set during creation or by using CControlBar::SetBarStyle(). This
style results in the ToolBar using MFC's thread specific common
CToolTipCtrl rather than a unique one for the ToolBar. Since the ToolTip is
not specific to the ToolBar, GetToolTips() returns NULL.
Note that a CToolTipCtrl specific to a CToolBar can be created by
overriding the CToolBar::PreCreateWindow() and setting the
TBSTYLE_TOOLTIPS. In this case, the return value of GetToolTips() will be
valid.
REFERENCES
For additional information, please see the following article in the
Microsoft Knowledge Base:
151162 PRB: CToolBarCtrl Styles Fail with CToolBar
Additional query words: 4.00 4.10
Keywords: kbmfcctrlbar kbprb kbtoolbar kbtooltip KB151894