我一直在努力改变为表单主标题栏上的按钮显示的工具提示的文本。
简而言之,我们利用Windows窗体的“帮助”按钮来实现其他目的。这工作正常。问题是,当鼠标悬停在该按钮上时,会出现“帮助”工具提示,这对应用程序没有任何意义。
理想情况下,有一些方法可以为我的应用程序更改该工具提示的文本;但是,在这一点上,我只是想找到一种完全禁用工具提示的方法。
我知道你可以通过在regedit中修改'UserPreferencesMask'键来禁用整个操作系统的工具提示,但我真的想要一种方法让它只影响我的应用程序。
同样,理想情况下,托管代码可能会有一些方法,但我不反对链接到Windows API等。
感谢您提出解决此问题的任何建议!
答案 0 :(得分:1)
作为解决方法,您可能不会使用帮助按钮,而是:添加自定义按钮。
虽然this sample不是那么完美,但它向你展示了这个想法。
答案 1 :(得分:0)
这是一个非常有趣的问题。我的第一个想法是使用GetSysMenu更改系统菜单。我尝试删除并重命名“关闭”项,但关闭按钮的工具提示没有改变。然后我试图捕获工具提示窗口的HWND,但我没有成功。如果我让表单(我在Delphi中工作)显示一个名为“Test”的工具提示,我可以通过FindWindow获取其HWND(nil,'Test'),然后我可以将SendMessage WM_CLOSE发送给它。
在下面的示例代码中,我使用计时器不断搜索工具提示。这对性能不利,因此人们希望确切地找出工具提示出现的时间。在这种情况下,当工具提示与客户端控件关联时,可以简单地使用OnHint事件。
procedure TForm1.Timer1Timer(Sender: TObject);
var
h: HWND;
begin
h := FindWindow(nil, 'Test');
if h <> 0 then
SendMessage(h, WM_CLOSE, 0, 0);
end;
但是,当工具提示与标题栏按钮相关联时,有两个问题。