提示形式和焦点

时间:2012-02-06 13:48:40

标签: delphi windows-7 focus delphi-xe

我正在显示自定义表单作为提示。我希望提示窗口无法获得焦点。

提示表单的

Enabled属性设置为False,我还处理WM_MOUSE_ACTIVATE窗口消息并返回MA_NOACTIVATE。然而,每次显示提示窗口时,我的主窗口的边框都会闪烁(带有透明边框的Windows 7)。

如何避免这种闪烁?

1 个答案:

答案 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)。