我正在显示自定义表单作为提示。我希望提示窗口无法获得焦点。
提示表单的 Enabled
属性设置为False
,我还处理WM_MOUSE_ACTIVATE
窗口消息并返回MA_NOACTIVATE
。然而,每次显示提示窗口时,我的主窗口的边框都会闪烁(带有透明边框的Windows 7)。
如何避免这种闪烁?
答案 0 :(得分:4)
我假设您在处理Application.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;
最后一行使用D7(并使用THintFrom
作为普通表单,在XP和W7上使用默认设置,例如Enabled = True)。