ウインドウの位置を保存するには?

解決


 2008-07-26 19:21:43  No: 31371  IP: 192.*.*.*

画面をフルスクリーンにするべく、

procedure TForm1.FormCreate(Sender: TObject);
var
  devicemode:DEVMODE;
begin
  with devicemode do begin
  dmSize := sizeof(devicemode);
  dmPelsWidth := 640;
  dmPelsHeight:= 480;
  dmFields := $180000;
  end;
  if (ChangeDisplaySettings(devicemode,4)=-1) then exit;
end;

と記述して実行し、このアプリケーションを閉じると、

(1) 開いていた他のウインドウの位置が右下にずれてしまう
(2) アンチウイルスソフト等の、通常はタスクバーの右隅に
    隠れているウインドウも右下にずれてしまう

という問題が生じました。
各ウインドウの大きさは解像度変更前と同じです。
タスクバーに隠れているものも含めて、各ウインドウの位置を保存
して、アプリケーション終了時に復元することは可能でしょうか?

編集 削除
明示的に  2008-08-02 19:30:22  No: 31372  IP: 192.*.*.*

自動的に戻すのではなく、OnCloseイベントで明示的に元のスクリーンサイズに設定してやれば、ウィンドウの位置は右下にずれないと思うけど。

編集 削除
?  2008-08-02 22:40:30  No: 31373  IP: 192.*.*.*

上述されている通り、アプリケーション終了時にdmPelsWidthと
dmPelsHeightとを元の解像度に戻しておけば、タスクバーに隠れて
いるウインドウも含めて位置がずれなくなりました。
ありがとうございました。

編集 削除