(参考自MSDN)
方法一:
概述:
当您在创建Toolbar时指定了TBSTYLE_TOOLTIPS 风格,那么您所创建的工具条将自动创建和管理一个ToolTip控件。这个ToolTip控件是一个小型的弹出(POP-UP)窗口,它包含了一行描述Toolbar上的按钮的文字。当鼠标移动到Toolbar的Button上并停留一秒钟左右时,ToolTip就会出现在靠近鼠标位置附近,反之,当鼠标离开此按钮时,ToolTip隐藏。
当ToolBar接收到WM_MOUSEMOVE 消息时,它会发送一个WM_NOTIFY 消息给所对应的ToolTip 控件。这时ToolTip设置一个定时器(timer),在大约一秒钟之后,检查鼠标是否还在同一个按钮的同一个位置上,如果是,ToolTip发送一个WM_NOTIFY消息(内含TTN_GETDISPINFO标志)给父窗口,父窗口在处理此消息时,应设置对应按钮的描述文字。然后ToolTip控件创建一个弹出窗口来显示对应按钮的描述文字。当用户单击按钮或鼠标离开按钮时,ToolTip控件会销毁这个弹出窗口。
我们可以利用SendMessage函数发送TB_GETTOOLTIPS 消息获取ToolTip控件的句柄(handle)。如果你想替换当前Toolbar中的ToolTip控件,则可以利用SendMessage函数发送TB_SETTOOLTIPS消息给Toolbar.
具体实现:
如果应用程序要想在Toolbar不同Button上显示自定义的文字,那么这时就必须在父窗口中对TTN_GETDISPINFO消息作出响应,但是,请不要在Toolbar的内部进行处理,或者截取ToolTip发给Toolbar的WM_NOTIFY消息进行处理。
1.工具条在创建的时候要指定 TBSTYLE_TOOLTIPS风格,以便同时创建相应的ToolTip控件。
hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR) NULL,
WS_CHILD
|TBSTYLE_FLAT
|WS_BORDER |CCS_NOMOVEY |TBSTYLE_TOOLTIPS
, 0, 0, 0, 0, hwndParent,
(HMENU)IDR_TOOLBAR1,g_hInst, NULL);
2.当Toolbar上的Button需要显示相应的描述文字时,父窗口接收到WM_NOTIFY(内含TTN_GETDISPINFO标志)消息。这时lparam参数包含一个指向需要显示文字的Button上的NMTTDISPINFO结构的指针。我们可以通过设置该结构中的lpszText成员来设定该Button上的描述文字。
case WM_NOTIFY:
switch (((LPNMHDR) lParam)->code)
{
case TTN_GETDISPINFO:
{
LPTOOLTIPTEXT lpttt;
lpttt = (LPTOOLTIPTEXT) lParam;
lpttt->hinst = g_hinst;
// Specify the resource identifier of the descriptive
// text for the given button.
idButton = lpttt->hdr.idFrom;
switch (idButton)
{
case IDM_CUT:
lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_CUT);
break;
case IDM_COPY:
lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_COPY);
break;
case IDM_PASTE:
lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_PASTE);
break;
}
break;
}
.
. // Process other notifications here.
.
default:
break;
}
方法二:
概述:
如果在添加按钮的过程中,我们指定TBBUTTON结构中的成员iString的值,那么Toolbar控件会自动将这个值作为该按钮的ToolTip说明文字。
具体实现:
1.工具条在创建的时候要指定 TBSTYLE_TOOLTIPS风格,以便同时创建相应的ToolTip控件。
hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR) NULL,
WS_CHILD
|TBSTYLE_FLAT
|WS_BORDER |CCS_NOMOVEY |TBSTYLE_TOOLTIPS
, 0, 0, 0, 0, hwndParent,
(HMENU)IDR_TOOLBAR1,g_hInst, NULL);
2.设定TBBUTTON中的iString的值。
TBBUTTON tbb[8];。。。。。。
。。。。。
Tbb[1].iString = “F”;
。。。。。。。
3.在添加了Toolbar上的Button的函数之后,发送一个TB_SETMAXTEXTROWS消息
SendMessage(hWndToolbar,
TB_SETMAXTEXTROWS,
(WPARAM) 0,
0);
这时,如果应用程序没有对TBN_GETINFOTIP消息作出响应,那么Toolbar就会使用TBBUTTON结构中的iString的值作为ToolTip上的说明文字。