簡體   English   中英

如何在MFC Treeview中的運行時設置工具提示?

[英]How to set tooltip at runtime in MFC Treeview?

如何在MFC Treeview中的運行時設置工具提示?

我正在創建像這樣的treeview:

                        m_pTreeview->Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |                     
            TVS_SINGLEEXPAND,CRect(38, 82, 220 ,250), this, IDC_NDS_TREEVIEW);

任何幫助表示贊賞。

如果從CTreeControl派生自己的控件,則Pankaj的答案有效。 卡薩布蘭卡的答案是正確的,只是缺少代碼。

因此,這里有一些我的經驗提示。

  • 如果沒有顯式創建控件,則可以在定義控件的資源文件中指定GETINFOTIP樣式。

  • 否則可以在運行時通過獲取樹的窗口句柄來修改樣式

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

  • 為了能夠處理GETINFOTIP:

    如果將TreeControl用作對話框內的成員控件:

    ON_NOTIFY(TVN_GETINFOTIP,IDC_TREE,OnMyTreeGetInfoTip)

    否則,如果您要從CTreeControl派生自己的控件,請使用以下命令:

    ON_NOTIFY_REFLECT(TVN_GETINFOTIP,OnMyTreeGetInfoTip)

希望這對某人有幫助。

如果要引用樹控件中各項的工具提示,則需要在“ Create (請參閱樹視圖樣式列表)中的窗口樣式中添加TVS_INFOTIP 您還必須處理TVN_GETINFOTIP通知消息,以根據項目提供工具提示文本。

使用TVS_INFOTIP樣式樹視圖,並使用ON_NOTIFY處理程序處理TVN_GETINFOTIP通知。 將NMHDR ptr轉換為(NMTVGETINFOTOOLTIP *)pnmhdr到NM​​TVGETINFOTOOLTIP ptr,然后在此結構中設置工具提示字符串。

這里是一些代碼:-在.H文件中

afx_msg void OnMyTreeGetInfoTip(NMHDR pNMHDR, LRESULT pResult);

在BEGIN MESSAGE MAP塊中添加-

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM