将鼠标留言延伸到工具提示

【勇芳软件工作室】汉化HomePreviousNext

工具提示控件需要接收鼠标消息以确定何时显示工具提示窗口。由于Windows仅将鼠标信息发送到包含游标的窗口,因此必须使用TTM_RELAYEVENT消息将鼠标消息转发到工具提示控件。

如果在应用程序定义的窗口中将工具实现为矩形区域,则窗口过程将接收鼠标消息,并将其转发到工具提示控件。但是,如果将工具实现为系统定义的窗口,则鼠标消息将发送到窗口,并且应用程序不可用。您必须使用消息挂钩来访问和中继鼠标消息,否则您必须对该窗口进行子类化。

当工具提示控件收到中继的WM_MOUSEMOVE消息时,它会确定光标是否在工具的边框中。如果光标在那里,则工具提示控件设置一个计时器。在超时时间结束时,工具提示控制将检查光标的位置,以查看是否已移动。如果光标没有,工具提示控件将检索工具的文本,将文本复制到工具提示窗口中,并显示窗口。工具提示控件继续显示窗口,直到它收到中继的按钮或按钮消息,或者直到中继的WM_MOUSEMOVE消息指示光标移动到工具的边界矩形外。

工具提示控制实际上具有与之相关联的三个超时持续时间。【初始持续时间】是在显示工具提示窗口之前光标必须保持固定在工具的边界矩形内的时间长度。【重播持续时间】是当光标从一个工具移动到另一个工具时显示后续工具提示窗口的延迟的长度。【自动调整持续时间】是工具提示窗口在隐藏之前保持显示的时间长度。也就是说,如果在显示工具提示窗口后光标保持固定在边界矩形内,则工具提示窗口将在自动调整持续时间结束时自动隐藏。您可以使用TTM_SETDELAYTIME消息来调整所有超时持续时间。

如果应用程序包含实现为矩形区域的工具,并且控件的大小或位置更改,则可以使用TTM_NEWTOOLRECT消息将更改报告给工具提示控件。应用程序不需要为实现为窗口的工具报告大小和位置更改。报告不是必需的,因为工具提示控件使用工具的窗口句柄来确定光标是否在工具上,而不是工具的边界矩形。

当即将显示时,一个齿形控制器将TTN_SHOW通知发送给所有者窗口。工具提示控件在即将被隐藏时发送TTN_POP通知。每个通知都会在WM_NOTIFY消息的上下文中发送。