人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: harunoharuno
●カテゴリ:コンピュータ インターネット
✍キーワード:CASE mfc switch アドバイス イベント
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● poiukiu
●0ポイント

http://willserver.com/freewill/news/w/index.html

◎質問者からの返答

ブラクラかな?


2 ● tknrych
●40ポイント

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

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

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

◎質問者からの返答

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

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


3 ● ycyc
●100ポイント ベストアンサー

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を設定していたため

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ