PRB: CToolBarCtrl::GetToolTips() May Return NULL for a ToolBar

ID: Q151894


The information in this article applies to:
  • The Microsoft Foundation Classes (MFC), included with:
    • Microsoft Visual C++, 32-bit Editions, versions 4.0, 4.1


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:

Q151162 PRB: CToolBarCtrl Styles Fail with CToolBar

Additional query words: 4.00 4.10

Keywords : kbnokeyword kbMFC kbVC
Version : 4.00 4.10
Platform : NT WINDOWS
Issue type :


Last Reviewed: July 21, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.