工具提示是当鼠标在某特定区域上停留时
显示的一个矩形窗口。工具提示窗口包含一些编程者想要显示的
文本。在这点上,工具提示同状态栏的作用是一样的,所不同的是工具提示当单击或者远离指定区域的时候就会消逝,你可能熟悉与
工具栏相关联的工具提示,那些提示是工具栏控件提供的便利。如果你想要在其它窗口、控件中显示工具提示的话,就不得不自己创建他们。
创建步骤
既然已经了解了什么是工具提示,就让我们来看看如何创建他们.大致步骤如下:
用CreateWindowEx函数创建工具提示控件. 定义一个工具提示控件将要监视鼠标移动的区域. 将区域传递给工具提示控件 将传递区域的鼠标消息转送给工具提示控件.(这步或许更早,具体依据转播消息的方法) 下面我们就来详细的讨论每一步.
工具提示控件的创建工具提示控件是一种通用控件.同样,要在源代码某处调用
InitCommonControls以便MASM能够将你的程序和comctl32.dll连接. 用CreateWindowEx创建工具提示控件,典型代码如下:
.data
.code
.....
invoke CreateWindowEx, NULL, addr TooltipClassName, NULL, TIS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL注意窗口风格:TIS_ALWAYSTIP指定了工具提示不管包含指定区域的窗口状态如何,当鼠标移过指定区域的时候,工具提示总是显示.简单的说就是,即使窗口处于非激活状态,鼠标移过工具提示指定区域的时候,工具提示也会出现.
你不必在CreateWindowEx中包括WS_POPUP 和 WS_EX_TOOLWINDOW风格,因为工具提示处理过程会自动加上,你也不必指定工具提示窗口的坐标和宽高,控件会依据要显示的文字自动调节.四个参数,均使用CW_USEDEFAULT ,其余的参数都不太重要.
指定工具工具提示控件创建了但还没有显示,我们想要当
鼠标指针cbSize DWORD ?
uFlags DWORD ?
hWnd DWORD ?
uId DWORD ?
rect RECT <>
hInst DWORD ?
lpszText DWORD ?
lParam LPARAM ?
总言之,你需要将
TOOLINFOTOOLINFOTTM_ADDTOOL消息 wParam不使用,lParam必须包含要注册的TOOLINFO结构的
指针.data?
ti TOOLINFO <>
.......
.code
.......
<fill the
TOOLINFO structure>
.......
invoke SendMessage, hwndTooltip, TTM_ADDTOOL, NULL, addr ti成功返回 TRUE,否则返回 FALSE.
发送 TTM_DELTOOL消息取消注册.
TTM_RELAYEVENT 以转发消息. lParam是指向要转发消息MSG的
指针 控件仅处理如下鼠标消息 : WM_LBUTTONDOWN WM_MOUSEMOVE WM_LBUTTONUP WM_RBUTTONDOWN WM_MBUTTONDOWN WM_RBUTTONUP WM_MBUTTONUP
.......
if uMsg==WM_CREATE
.............
elseif uMsg==WM_LBUTTONDOWN || uMsg==WM_MOUSEMOVE || uMsg==WM_LBUTTONUP || uMsg==WM_RBUTTONDOWN || uMsg==WM_MBUTTONDOWN || uMsg==WM_RBUTTONUP || uMsg==WM_MBUTTONUP
invoke SendMessage, hwndTooltip, TTM_RELAYEVENT, NULL, addr msg
..........
.你可以在
TOOLINFO结构的uFlags成员指定 TTF_SUBCLASSTTF_SUBCLASS标志之外不用编写多余的代码,因此很易于使用。 就是这些了,到这步为止,控件已经全功能了.还有几个你应当知道的相关消息.
TTM_ACTIVATE.如果你想动态的允许或者禁止工具提示控件,这个小消息就是为你而备.wParam值为TRUE,允许控件.若为FALSE,禁止控件.控件初始创建的时候无需发送消息激活他,便被自动设为允许状态. TTM_GET
TOOLINFO and TTM_SETTOOLINFOTTM_NEWTOOLRECT 消息,如果仅想改变提示文本,使用TTM_UPDATETIPTEXT消息. TTM_SETDELAYTIME. 使用此消息指定控件显示提示文本时的时间延迟.
ASP .NET Wijmo的工具提示控件:
用与上下文相关的工具提示给最终用户提供一个更好的UX。ComponentOne为ASP .NET Wijmo出品的工具提示控件可以将HTML内容加载并显示在Web应用程序中。也可以对工具提示的外观具有完全的控制权。