VC6でMFCを使わずダイアログを作成しました(※1)。

ダイアログ表示後に行われる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

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/09/13 14:31:39
  • 終了:2010/09/14 15:51:54

ベストアンサー

id:ycyc No.3

ycyc回答回数37ベストアンサー獲得回数62010/09/14 00:35:04

ポイント100pt

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 パラメータを無視します)。)

id:harunoharuno

回答ありがとうございます。確認後再度コメントいたします。

無事にサイズを変更することができました。どうもありがとうございます。

原因はご指摘いただいたとおりuFlagsにSWP_NOSIZEを設定していたため

値を変えてもサイズを維持し続けていたようです。

2010/09/14 11:49:29

その他の回答(2件)

id:poiukiu No.1

poiukiu回答回数35ベストアンサー獲得回数02010/09/13 19:45:15

id:harunoharuno

ブラクラかな?

2010/09/13 21:11:17
id:tknrych No.2

tknrych回答回数84ベストアンサー獲得回数82010/09/13 19:45:29

ポイント40pt

プログラム中でダイアログボックスのサイズを変更したいのでしょうか。

もしくは、マウスを使って、ダイアログボックスのサイズを変更したいのでしょうか。

http://homepage2.nifty.com/c_lang/sdk/sdk_15.htm

id:harunoharuno

プログラムの中で解像度に合わせて

初期表示のサイズを指定したいと思っています。

2010/09/13 21:13:32
id:ycyc No.3

ycyc回答回数37ベストアンサー獲得回数62010/09/14 00:35:04ここでベストアンサー

ポイント100pt

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 パラメータを無視します)。)

id:harunoharuno

回答ありがとうございます。確認後再度コメントいたします。

無事にサイズを変更することができました。どうもありがとうございます。

原因はご指摘いただいたとおりuFlagsにSWP_NOSIZEを設定していたため

値を変えてもサイズを維持し続けていたようです。

2010/09/14 11:49:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません