如何顯示按鈕的工具提示
當您指定 TBSTYLE_TOOLTIPS 樣式時,工具列會建立和管理工具提示控件。 工具提示控件會隱藏,而且只有在使用者將指標移至工具列按鈕上方,並將它留在該處大約一秒時才會顯示。
您的應用程式可以使用下列任一種方式,將文字提供給工具提示控制項:
- 將工具提示文字設定為每個按鈕之 TBBUTTON 結構的 iString 成員。 您也必須傳送 TB_SETMAXTEXTROWS 訊息,並將文字列上限設定為0,讓文字不會顯示為按鈕標籤,而不是工具提示。
- 使用TBSTYLE_LIST樣式建立工具列,然後設定TBSTYLE_EX_MIXEDBUTTONS延伸樣式。 只有具有BTNS_SHOWTEXT樣式的按鈕才會顯示標籤。 對於沒有此樣式的按鈕,會顯示包含按鈕文字的工具提示。
- 回應TTN_GETDISPINFO通知程序代碼。
- 回應TBN_GETINFOTIP通知程序代碼。
需要將訊息直接傳送至工具提示控件的應用程式,可以使用 TB_GETTOOLTIPS 訊息來擷取控件的句柄。 應用程式可以使用TB_SETTOOLTIPS訊息,將工具列的工具提示控件取代為另一個工具提示控件。
提供工具提示文字的最彈性方式,是回應工具列控件以WM_NOTIFY訊息形式傳送給其父系的TTN_GETDISPINFO或TBN_GETINFOTIP通知碼。 針對TTN_GETDISPINFO,lParam 參數包含 NMTTDISPINFO 結構的指標(也稱為 LPTOOLTIPTEXT),指定需要說明文字之按鈕的命令標識符。 此標識碼位於 NMTTDISPINFO.hdr.idFrom 成員中。 應用程式可以將說明文字複製到 結構、指定包含說明文字的字串位址,或指定字串資源的實例句柄和資源識別符。
您需要知道的事項
技術
必要條件
- C/C++
- Windows 使用者介面程序設計
指示
顯示按鈕的工具提示
下列範例程式代碼會藉由提供資源標識碼處理 TTN_GETDISPINFO 工具提示通知程式代碼。
case WM_NOTIFY:
switch (((LPNMHDR) lParam)->code)
{
case TTN_GETDISPINFO:
{
LPTOOLTIPTEXT lpttt = (LPTOOLTIPTEXT)lParam;
// Set the instance of the module that contains the resource.
lpttt->hinst = g_hInst;
UINT_PTR idButton = lpttt->hdr.idFrom;
switch (idButton)
{
case IDM_NEW:
lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_NEW);
break;
case IDM_OPEN:
lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_OPEN);
break;
case IDM_SAVE:
lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_SAVE);
break;
}
break;
}
}
return TRUE;
相關主題