如何修改 CToolTipCtrl 的工具矩形?
Posted
技术标签:
【中文标题】如何修改 CToolTipCtrl 的工具矩形?【英文标题】:How to modify the tool rect of a CToolTipCtrl? 【发布时间】:2009-05-15 09:23:57 【问题描述】:这个问题是related to this one。
在 CDockablePane 派生类中,我有一个 CTreeCtrl 成员,我在 OnCreate() 中为其添加了 ToolTip:
int CMyPane::OnCreate(LPCREATESTRUCT lpCreateStruct)
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;
const DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
TVS_CHECKBOXES | TVS_DISABLEDRAGDROP | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
TVS_INFOTIP | TVS_NOHSCROLL | TVS_SHOWSELALWAYS;
if(!m_tree.Create(dwStyle, m_treeRect, this, TREECTRL_ID) ) return -1;
m_pToolTip->AddTool(&m_tree, LPSTR_TEXTCALLBACK, &m_treeRect, TREECTRL_ID);
m_tree.SetToolTips(m_pToolTip);
return 0;
我必须使用所有可选参数调用 AddTool(),因为默认值不适用于 CDockablePane。m_treeRect
是 CTor 中设置为 (0, 0, 10000, 10000)
的 CRect
成员。这真的很丑。
我想在m_tree
的大小发生变化时调整工具的矩形。
所以我在CMyPane::OnSize()
中尝试了一些东西,但都没有奏效:
m_pToolTip->GetToolInfo()
然后修改CToolInfo
的rect成员,然后调用SetToolInfo()
致电m_pToolTip->SetToolRect()
这意味着什么?
【问题讨论】:
【参考方案1】:除了在您的 OnSize
处理程序中再次调用 DelTool
然后 AddTool
之外,我没有其他方法可以做到这一点:
void CMyPane::OnSize(UINT nType, int cx, int cy)
CDockablePane::OnSize(nType, cx, cy);
if (m_pToolTip != NULL)
m_pToolTip->DelTool(&m_tree, TREECTRL_ID);
CRect treeRect;
m_tree.GetClientRect(treeRect);
m_pToolTip->AddTool(&m_tree, LPSTR_TEXTCALLBACK, &treeRect, TREECTRL_ID);
【讨论】:
【参考方案2】:int CMyPane::OnCreate(LPCREATESTRUCT lpCreateStruct)
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;
const DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
TVS_CHECKBOXES | TVS_DISABLEDRAGDROP | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
TVS_INFOTIP | TVS_NOHSCROLL | TVS_SHOWSELALWAYS;
if(!m_tree.Create(dwStyle, m_treeRect, this, TREECTRL_ID) ) return -1;
m_pToolTip->AddTool(&m_tree, LPSTR_TEXTCALLBACK, &m_treeRect, TREECTRL_ID);
m_tree.SetToolTips(m_pToolTip);
return 0;
【讨论】:
以上是关于如何修改 CToolTipCtrl 的工具矩形?的主要内容,如果未能解决你的问题,请参考以下文章