C++ MFC:为CTabView中的选项卡创建工具提示

C++ MFC:为CTabView中的选项卡创建工具提示,c++,mfc,tooltip,C++,Mfc,Tooltip,我想在CSplitterWnd窗格之一的CTabView上为选项卡创建工具提示。在这种情况下,选项卡是一个CHtmlView。我将CTOLTIPCTRL m\U工具提示作为public放入CMainFrame中。我在OnCreate()上创建它,然后尝试在CHtmlView选项卡项的OnInitialUpdate()上向它添加测试文本。但当将鼠标悬停在选项卡或选项卡的客户端区域上时,不会显示任何工具提示。我做错了什么或错过了什么 int CMainFrame::OnCreate(LPCREATE

我想在
CSplitterWnd
窗格之一的
CTabView
上为选项卡创建工具提示。在这种情况下,选项卡是一个
CHtmlView
。我将
CTOLTIPCTRL m\U工具提示作为
public
放入
CMainFrame
中。我在
OnCreate()
上创建它,然后尝试在
CHtmlView
选项卡项的
OnInitialUpdate()
上向它添加测试文本。但当将鼠标悬停在选项卡或选项卡的客户端区域上时,不会显示任何工具提示。我做错了什么或错过了什么

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
  // ...
  m_ToolTip.Create(this);

  return 0;
}

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
  // create spliter windows - one of which will end up with CTabView 
}

// One of the tabs in the CTabView is based on CHtmlView
void CMyHtmlView::OnInitialUpdate()
{
  __super::OnInitialUpdate();

  CToolTipCtrl &tooltip=((CMainFrame*) AfxGetMainWnd())->m_ToolTip;
  tooltip.AddTool(this, _T("Test Tooltip"));
  tooltip.Activate(TRUE);
}
放弃上述内容,我实施了MFC第二版编程窗口一书中941-942页的建议,从
CTOLTIPCTRL
派生并实现使用
TTF_子类的新函数。我在选项卡的客户端区域的
CMyTabView
中尝试了它。它在某种程度上适用于编辑和丰富视图,但不适用于HTML视图。我的意思是,它可能会工作两次,然后就不会再出现了。以下是这一部分:

int CMyTabView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
  if (CTabView::OnCreate(lpCreateStruct) == -1)
    return -1;

  AddView(RUNTIME_CLASS(CMyEditView), _T("Tab1"));
  AddView(RUNTIME_CLASS(CMyRichView), _T("Tab2"));
  AddView(RUNTIME_CLASS(CMyHtmlView), _T("Tab3"));

  m_ToolTip.Create(this, TTS_ALWAYSTIP);

  CMFCTabCtrl &tabctrl=GetTabControl();
  for (int i=0; i < tabctrl.GetTabsNum(); ++i) {
    m_ToolTip.AddWindowTool(tabctrl.GetTabWnd(i), _T("Test Tool Tip"));
  }

  return 0;
}

但这不起作用。它也尝试过使用
这个
,但仍然不起作用。所以,虽然有些东西起作用了,但还是不能让它在标签上工作?有什么想法吗?

我不认为
CMFCTabCtrl
CTabView
是相关的。您应该显示屏幕截图。GetTabControl()是CTabView的一部分。
void CMyTabView::OnInitialUpdate()
{
  CTabView::OnInitialUpdate();

  CMFCTabCtrl &tabctrl=GetTabControl();
  CRect rc;
  tabctrl.GetTabsRect(rc);
  if (!rc.IsRectEmpty()) {
    m_ToolTip.AddRectTool(&tabctrl, _T("test tip"), &rc, (UINT_PTR) tabctrl.GetSafeHwnd());
  }
}