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());
}
}