使用CtoolTipCtrl
導讀:本文適用於相對靜止的控件,比如按鈕,不適用於向樹型控件這樣的位置不固定的控件(因爲樹型控件經常被摺疊和展開)
CtoolTipCtrl封裝了一個工具提示的控件,可彈出一個單行的小窗口來顯示一些描述信息,大多時候它是隱藏的,除非用戶將光標移到要顯示提示的工具上面,並且停留大概半秒的時間它才顯示,當單擊鼠標或者移走光標的時候這個提示窗口就會消失
例子:給對話框的按鈕添加提示功能
具體步驟:
l 首先創建一個對話框程序TestToolTip
l 在TestToolTip類中定義一個CtoolTipCtrl對象
public:
CToolTipCtrl m_pToolTipCtrl;
l 創建一個工具提示控件並關聯到m_pToolTipCtrl對象,(位置:OnInitDialog)
風格 |
意義 |
TTS_ALWAYSTIP |
指示當光標在一個工具上時顯示工具提示,不管工具提示的屬主窗口是否是處於活動狀態。沒有這個風格,則只有當工具的屬主窗口是活動的時候纔會顯示工具提示控件,否則不顯示 |
TTS_NOPREFIX |
這個風格禁止系統將 & 字符從一個字符串中去掉。如果一個工具提示控件沒有 TTS_NOPREFIX 風格,則系統自動去掉 & 字符,讓應用程序用同一個字符串作爲菜單項和工具提示控件中的文本 |
if (!m_pToolTipCtrl.Create(this, TTS_ALWAYSTIP))
{
TRACE(_T("Unable To create ToolTip/n"));
return FALSE;
}
l 調用AddTool向工具提示添加註冊,這樣當光標移動到工具上才能顯示信息
m_pToolTipCtrl.AddTool(GetDlgItem(IDOK),_T("確定按鈕,點擊關閉對話框"));
l 添加虛函數PreTranslateMessage
BOOL CTestToolTipDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message== WM_LBUTTONDOWN ||
pMsg->message== WM_LBUTTONUP ||
pMsg->message== WM_MOUSEMOVE)
m_pToolTipCtrl.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
效果圖:
若在樹型控件中使用tool tip
參考:http://www.codeproject.com/treectrl/treetooltip.asp