2010-10-29 38 views

回答

0

這裏是一些代碼: - 在.h文件中

afx_msg void OnMyTreeGetInfoTip(NMHDR pNMHDR, LRESULT pResult); 

在BEGIN消息映射塊添加 -

ON_NOTIFY_REFLECT (TVN_GETINFOTIP, OnMyTreeGetInfoTip) 

並使用處理器

void CMyTreeView::OnMyTreeGetInfoTip(NMHDR *pNMHDR, LRESULT *pResult) 
{ 
    LPNMTVGETINFOTIP pGetInfoTip = (LPNMTVGETINFOTIP)pNMHDR; 
    CString strItemTxt = m_TreeCtrl.GetItemText(pGetInfoTip->hItem); 
    strcpy(pGetInfoTip->pszText, strItemTxt); 
    *pResult = 0; 
} 
+0

您應該編輯您以前的回覆,而不是發送多個回覆。 – Praetorian 2010-10-29 14:21:07

0

如果你指的是提示在樹型控件項目,你需要添加TVS_INFOTIP到窗口樣式Create(請參閱list of tree-view styles)。您還必須處理TVN_GETINFOTIP通知消息,以根據項目提供工具提示文本。

+0

你能給我提供一些這方面的例子嗎? – 2010-10-29 04:49:36

+0

我剛剛在創建時在treeview中添加了TVS_INFOTIP,但沒有顯示任何工具提示。如何做下一步? – 2010-10-29 04:53:45

0

將TVS_INFOTIP樣式用於樹視圖,並使用ON_NOTIFY處理程序處理TVN_GETINFOTIP通知。將NMTVDR的NMHDR ptr轉換爲NMTVGETINFOTOOLTIP ptr作爲 (NMTVGETINFOTOOLTIP *)pnmhdr,然後在此結構中設置工具提示字符串。

0

潘卡的答覆工作,如果你從CTreeControl派生你自己的控制。 Cassablanca的回答是正確的,只有代碼丟失。

所以這裏有一些來自我自己的經驗的提示。

  • 如果不是明確創建控件,可以在定義控件的資源文件中指定GETINFOTIP樣式。

  • 否則風格可以在運行時通過得到修改樹的窗口句柄

    HWND htreectrl = m_TreeCtrl.GetSafeHwnd(); LONG nOldStyle = GetWindowLong(htreectrl,GWL_STYLE); LONG nNewStyle = nOldStyle & TVS_INFOTIP; SetWindowLong(htreectrl,GWL_STYLE,nNewStyle);

  • 爲了能夠處理GETINFOTIP:

    如果您使用的是樹形控件作爲對話框內的成員控制:

    ON_NOTIFY(TVN_GETINFOTIP,IDC_TREE,OnMyTreeGetInfoTip)

    不然,如果你是從CTreeControl派生自己的控制,然後使用此:

    ON_NOTIFY_REFLECT(TVN_GETINFOTIP,OnMyTreeGetInfoTip)

希望這可以幫助別人。

相關問題