У нас есть приложение, которое обрабатывает наше собственное сообщение - процедура с таймером читает для них базу данных. Если находим запись, то показываем форму модально.
Это не очень хорошее решение, потому что пользователь может вводить текст, видеть что-либо и т. д., а форма прерывает эту операцию.
Мне показалось, что я иногда видел, что диалоги, окна оторваны от приложения, и это как бы другие задачи (панель задач на этот раз состоит из двух элементов). Но такие вещи случаются нечасто, и это баги...
Но затем я хочу найти способ вызвать то же самое.
Таймер проверяет БД, и если в ней найдена запись, то мы покажем форму в фоновом режиме, что, похоже, является другой задачей, и она мигает, и периодически меняет заголовок. Когда пользователь щелкает по нему, он уничтожает себя и показывает исходную форму «сообщения» как модальную.
Можем ли мы сделать это с помощью трюков Win32? И как?
Спасибо: дд
Спасибо за первые ответы.
Я попытался создать простой пример. Вы можете увидеть здесь:
type
TC = class(TPanel)
private
protected
procedure WMActivate(var Message: TWMActivate); message WM_ACTIVATE;
public
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
t : TC;
begin
t := TC.Create(Self);
t.Width := 100;
t.Height := 100;
t.Caption := 'aaaa';
ShowWindow(t.Handle, sw_SHOW);
end;
{ TC }
procedure TC.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent := GetDesktopwindow;
end;
procedure TC.WMActivate(var Message: TWMActivate);
begin
if Message.Active <> WA_INACTIVE
then begin
SHowMessage('b');
SHowWindow(Self.Handle, sw_HIDE);
end;
end;
Это работает, но у меня есть одна проблема. Иконка задачи такая же, как у приложения. Если кто-то случайно щелкнул по нему, возможно, щелкнул не тот элемент. Как можно переопределить иконку подокна?
Спасибо: дд