dポイントプレゼントキャンペーン実施中!

Win32API入門(http://wisdom.sakura.ne.jp/system/winapi/)を見ながら、BCC32でGUIプログラミングの勉強をしています。

現在、以下URLのサンプルのように、ダイアログアプリケーションとして自作のソフトを作ろうとしています。
http://wisdom.sakura.ne.jp/system/winapi/win32/w …

さて、通常のダイアログ上のコントロールを初期化する際は、ウィンドウプロシージャでWM_INITDIALOGを補足するのが常套手段だと思いますが、上記サンプルのように、ダイアログアプリケーションとしてダイアログを生成した場合、WM_INITDIALOGが発行されないようです。
そこで、WM_CREATEを利用しようとしましたが、WM_CREATEが発行された時点では、GetDlgItem()等によるダイアログ上のコントロールのハンドル取得ができないようで、困ってしまいました。

ダイアログアプリケーションの初期化は、どのように行うのが正しいのでしょうか?

WinMain()で、CreateDialog()の直後に初期化処理を行えば、ひとまず目的は達成するのですが、WinMain()内での処理は何となく邪道のような気がして、質問させていただきました。

A 回答 (1件)

WinMain内に処理を書くのが気持ち悪いのはわかります。


コントロールの初期化処理はウィンドウプロシージャの方に書いたほうが良いでしょう。

例えば、CreateDialog()で作ったHWNDに対して、CreateDialog呼び出し直後にユーザ定義のメッセージをPostMessageしておいても良いかと思います。
こうすればウィンドウハンドラに初期化処理を実装することが出来ますよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
その後、色々調べたのですが、お仕着せのメッセージで今回の目的に使えるメッセージを見つけることは出来ませんでした。
おっしゃるとおり、自分でWM_INITDIALOGを発行してしのぐことにします。

お礼日時:2006/05/18 00:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!