Delphi 提示形式与焦点
我正在显示一个自定义表单作为提示。我希望提示窗口不获得焦点 提示表单的Delphi 提示形式与焦点,delphi,windows-7,focus,delphi-xe,Delphi,Windows 7,Focus,Delphi Xe,我正在显示一个自定义表单作为提示。我希望提示窗口不获得焦点 提示表单的Enabled属性设置为False,我还处理WM\u MOUSE\u ACTIVATE窗口消息并返回MA\u NOACTIVATE。然而,每次显示提示窗口时,我的主窗口的边框都会闪烁(带有透明边框的Windows 7) 如何避免这种闪烁?我假设您在处理应用程序时显示自己的提示表单。OnShowHint,例如: procedure TMainForm.ApplicationShowHint(var HintStr: string
Enabled
属性设置为False
,我还处理WM\u MOUSE\u ACTIVATE
窗口消息并返回MA\u NOACTIVATE
。然而,每次显示提示窗口时,我的主窗口的边框都会闪烁(带有透明边框的Windows 7)
如何避免这种闪烁?我假设您在处理
应用程序时显示自己的提示表单。OnShowHint
,例如:
procedure TMainForm.ApplicationShowHint(var HintStr: string;
var CanShow: Boolean; var HintInfo: THintInfo);
var
HintForm: THintForm;
begin
CanShow := False;
HintForm := THintForm.Create(nil);
HintForm.HintLabel.Caption := HintStr;
HintForm.Left := HintInfo.HintPos.X;
HintForm.Top := HintInfo.HintPos.Y;
ShowWindow(HintForm.Handle, SW_SHOWNOACTIVATE);
end;
最后一行在XP和W7上使用D7(以及作为默认设置的标准形式的
THintFrom
,例如Enabled=True)实现了这个技巧。我假设您在处理应用程序时显示自己的提示表单。OnShowHint
,例如:
procedure TMainForm.ApplicationShowHint(var HintStr: string;
var CanShow: Boolean; var HintInfo: THintInfo);
var
HintForm: THintForm;
begin
CanShow := False;
HintForm := THintForm.Create(nil);
HintForm.HintLabel.Caption := HintStr;
HintForm.Left := HintInfo.HintPos.X;
HintForm.Top := HintInfo.HintPos.Y;
ShowWindow(HintForm.Handle, SW_SHOWNOACTIVATE);
end;
最后一行在XP和W7上使用D7(以及作为默认设置的正常形式的
THintFrom
,例如Enabled=True)实现了这个技巧。我建议您查看一下THintWindow
(Controls.pas)。特别是在它的THintWindow.CreateParams
和ActivateHint
方法上。有什么提示确切地说什么是重要的吗?情况有点不同,我尝试了大部分的东西从<代码> TimTunDouth,但不能让它工作…我在我的评论中提到了我认为重要的(特别是)。我只能猜测而没有看到您的代码…我建议您查看一下THintWindow
(Controls.pas)。特别是在它的THintWindow.CreateParams
和ActivateHint
方法上。有什么提示确切地说什么是重要的吗?情况有点不同,我尝试了大部分的东西从<代码> TimTunDouth,但不能让它工作…我在我的评论中提到了我认为重要的(特别是)。我只能猜测而没有看到你的代码…谢谢!似乎我试着同时做很多事情。我曾经在表单样式中添加了一个额外的fsStayOnTop
,它似乎会导致闪烁。按照您的建议使用ShowWindow
,效果很好+1并接受。谢谢!似乎我试着同时做很多事情。我曾经在表单样式中添加了一个额外的fsStayOnTop
,它似乎会导致闪烁。按照您的建议使用ShowWindow
,效果很好+1并接受。