ダイアログ表示後に行われるWM_INITDIALOGのイベント処理で
ダイアログのサイズを変更したいと思っていますが、どのようにすれば良いでしょうか?
現在、下記のように記述しているのですが、ダイアログのサイズが変更されて表示されません。
アドバイス宜しくお願いします。
BOOL CALLBACK DlgTestProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_INITDIALOG: //ダイアログ初期化
SetWindowPos(hDlg,NULL,500,500,0,0,(SWP_NOMOVE | SWP_NOSIZE));
(省略)
}
(※1)ダイアログの作成方法は、以下のサイト参照
http://homepage2.nifty.com/c_lang/sdk/sdk_15.htm
SetWindowPosの引数は以下です。
BOOL SetWindowPos(
HWND hWnd, // ウィンドウのハンドル
HWND hWndInsertAfter, // 配置順序のハンドル
int X, // 横方向の位置
int Y, // 縦方向の位置
int cx, // 幅
int cy, // 高さ
UINT uFlags // ウィンドウ位置のオプション
);
http://msdn.microsoft.com/ja-jp/library/cc411206.aspx
ダイアログのサイズを変更したいのでしたら、
SetWindowPos(hDlg,NULL,500,500,100/*幅*/,200/*高さ*/,SWP_NOMOVE/*移動しない*/);
のようにして、以下の3つの対処をすればよいと思います。
・cxに値を設定する
・cyに値を設定する
・uFlagsにSWP_NOSIZEを設定しない
(SWP_NOSIZEがあると、現在のサイズを維持します(cx パラメータと cy パラメータを無視します)。)
プログラム中でダイアログボックスのサイズを変更したいのでしょうか。
もしくは、マウスを使って、ダイアログボックスのサイズを変更したいのでしょうか。
プログラムの中で解像度に合わせて
初期表示のサイズを指定したいと思っています。
SetWindowPosの引数は以下です。
BOOL SetWindowPos(
HWND hWnd, // ウィンドウのハンドル
HWND hWndInsertAfter, // 配置順序のハンドル
int X, // 横方向の位置
int Y, // 縦方向の位置
int cx, // 幅
int cy, // 高さ
UINT uFlags // ウィンドウ位置のオプション
);
http://msdn.microsoft.com/ja-jp/library/cc411206.aspx
ダイアログのサイズを変更したいのでしたら、
SetWindowPos(hDlg,NULL,500,500,100/*幅*/,200/*高さ*/,SWP_NOMOVE/*移動しない*/);
のようにして、以下の3つの対処をすればよいと思います。
・cxに値を設定する
・cyに値を設定する
・uFlagsにSWP_NOSIZEを設定しない
(SWP_NOSIZEがあると、現在のサイズを維持します(cx パラメータと cy パラメータを無視します)。)
回答ありがとうございます。確認後再度コメントいたします。
無事にサイズを変更することができました。どうもありがとうございます。
原因はご指摘いただいたとおりuFlagsにSWP_NOSIZEを設定していたため
値を変えてもサイズを維持し続けていたようです。
回答ありがとうございます。確認後再度コメントいたします。
無事にサイズを変更することができました。どうもありがとうございます。
原因はご指摘いただいたとおりuFlagsにSWP_NOSIZEを設定していたため
値を変えてもサイズを維持し続けていたようです。