喫茶XRAYトップページ

[スレッド全体
]

[3374] Re3:710_SDIスタイルアのプリケーション返信 削除
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;

[3375] Re4:710_SDIスタイルアのプリケーション返信 削除
2010/5/19 (水) 18:35:46 Mr.XRAY
> やるとすれば,この後に各ウィンドウの位置とサイズを希望の位置とサイズ
> に設定しなおすことになると思います.


あるいは,最初からCascadeWindows関数を使わないで,
自前でコードを書くかですね.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82