Форма подсказки и фокус - PullRequest
1 голос
/ 06 февраля 2012

Я показываю пользовательскую форму в качестве подсказки.Я хочу, чтобы окно подсказки не получало фокус.

Enabled свойство формы подсказки установлено на False, и я также обрабатываю сообщение окна WM_MOUSE_ACTIVATE и возвращаю MA_NOACTIVATE.Тем не менее, каждый раз, когда отображается окно подсказки, мигает граница моего главного окна (Windows 7 с прозрачными границами).

Как можно избежать этого мерцания?

1 Ответ

4 голосов
/ 06 февраля 2012

Я полагаю, вы показываете свою собственную форму подсказки при обработке 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 как обычной формой с настройками по умолчанию, например, Enabled = True) в XP и W7.

...