2010/5/19 (水) 18:25:23 Mr.XRAY |
▼ ishimizuさん.こんにちは.
> 大きくなりますね。これは、しかたがないのでしょうか?
> 解決策があるようでしたらお教えください。
しかたないと言うか,Windowsの仕様ですね.
下のコードは「重ねて表示」の実行部ですが,
CascadeWindows関数は,NSDNによると元に戻ることになります.
http://msdn.microsoft.com/ja-jp/library/cc410624.aspx
やるとすれば,この後に各ウィンドウの位置とサイズを希望の位置とサイズ
に設定しなおすことになると思います.
その設定の前に,現在のサイズ(位置は各フォームで少しずらすこと
になるので - 重ねて表示なので)をどこかに記憶しておくとか,ですね.
procedure TSDISubForm.menuCascadeWindowClick(Sender: TObject);
var
WndHandleList : array of HWND;
i : Integer;
begin
SetLength(WndHandleList, Screen.FormCount);
for i:=0 to Screen.FormCount-1 do begin
WndHandleList[i] := Screen.Forms[i].Handle;
SetForegroundWindow(WndHandleList[i]);
end;
CascadeWindows(0,
0,{MDITILE_SKIPDISABLED,}
nil,
Screen.FormCount,
Addr(WndHandleList[0]));
SetForegroundWindow(Handle);
end;
|
|