画面をフルスクリーンにするべく、
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) アンチウイルスソフト等の、通常はタスクバーの右隅に
隠れているウインドウも右下にずれてしまう
という問題が生じました。
各ウインドウの大きさは解像度変更前と同じです。
タスクバーに隠れているものも含めて、各ウインドウの位置を保存
して、アプリケーション終了時に復元することは可能でしょうか?
自動的に戻すのではなく、OnCloseイベントで明示的に元のスクリーンサイズに設定してやれば、ウィンドウの位置は右下にずれないと思うけど。
編集 削除上述されている通り、アプリケーション終了時にdmPelsWidthと
dmPelsHeightとを元の解像度に戻しておけば、タスクバーに隠れて
いるウインドウも含めて位置がずれなくなりました。
ありがとうございました。