如何在運行時在MFC Treeview中設置工具提示?如何在運行時在MFC Treeview中設置工具提示?
我創建樹形像這樣:
m_pTreeview->Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
TVS_SINGLEEXPAND,CRect(38, 82, 220 ,250), this, IDC_NDS_TREEVIEW);
任何幫助表示讚賞..
如何在運行時在MFC Treeview中設置工具提示?如何在運行時在MFC Treeview中設置工具提示?
我創建樹形像這樣:
m_pTreeview->Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
TVS_SINGLEEXPAND,CRect(38, 82, 220 ,250), this, IDC_NDS_TREEVIEW);
任何幫助表示讚賞..
這裏是一些代碼: - 在.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;
}
如果你指的是提示在樹型控件項目,你需要添加TVS_INFOTIP
到窗口樣式Create
(請參閱list of tree-view styles)。您還必須處理TVN_GETINFOTIP
通知消息,以根據項目提供工具提示文本。
你能給我提供一些這方面的例子嗎? – 2010-10-29 04:49:36
我剛剛在創建時在treeview中添加了TVS_INFOTIP,但沒有顯示任何工具提示。如何做下一步? – 2010-10-29 04:53:45
將TVS_INFOTIP樣式用於樹視圖,並使用ON_NOTIFY處理程序處理TVN_GETINFOTIP通知。將NMTVDR的NMHDR ptr轉換爲NMTVGETINFOTOOLTIP ptr作爲 (NMTVGETINFOTOOLTIP *)pnmhdr,然後在此結構中設置工具提示字符串。
潘卡的答覆工作,如果你從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)
希望這可以幫助別人。
您應該編輯您以前的回覆,而不是發送多個回覆。 – Praetorian 2010-10-29 14:21:07