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回まで
  • 登録:
  • 終了:2010/09/14 15:51:54
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ycyc No.3

回答回数37ベストアンサー獲得回数6

ポイント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

回答回数35ベストアンサー獲得回数0

id:harunoharuno

ブラクラかな?

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

回答回数84ベストアンサー獲得回数8

ポイント40pt

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

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

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

id:harunoharuno

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

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

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

回答回数37ベストアンサー獲得回数6ここでベストアンサー

ポイント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

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

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

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

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

回答リクエストを送信したユーザーはいません