Delphi7 Professional
WinXP Pro SP1
やろうとしている事は、最小化されたDelphiフォームをホットキーにて元に戻すという動作です。
Delphiで作成したFormを最小化し、ShowWindowAsync(Handle, SW_RESTORE);で元に戻した場合、再度最小化することが出来なくなってしまいます。
タスクバーの部分を右クリックすると、元に戻ったことを感知できていないのか、元に戻すのメニューが残ったままで、逆に最小化するメニューは使用不可な状態になっています。
メモ帳などのDelphi以外のアプリケーションでは、普通に最小化からの復帰を繰り返すことができるのですが、Delphiフォームに限りこのような症状になっています。
どなたか原因がわかる方いらっしゃいませんでしょうか。以下がソースの一部です。
//------------------------------------------------------------------------------
// ホットキーが押された時の処理
//------------------------------------------------------------------------------
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
var
HD:HWND;
begin
if Msg.HotKey = ID then
begin
ShowWindowAsync(Handle, SW_RESTORE);
SetForeGroundWindow(Handle);
end;
end;
Application.Restore;としてみては?
シャチさんありがとうございます。
あれから色々調べて解ったのですが、DelphiのFormは全てApplicationフォームという真のメインフォームの上(?)にあるような構成なんですね。
Form1にいくらRestoreしてもIsIconic()でTrueが返ってこない訳ですね・・・。
解決しました。ありがとうございました。
ツイート | ![]() |