Microsoft KB Archive/151894

= PRB: CToolBarCtrl::GetToolTips May Return NULL for a ToolBar =

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;

<div class="status_section">

STATUS
This behavior is by design.

<div class="moreinformation_section">

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.

<div class="references_section">