API-8 ダイアログウィンドウを使ったアプリケーション

API関連の本やwebページを見ていると、一般にWindowsAPIでアプリケーションを作る場合、
メインとなるウィンドウを作り
そのウィンドウの上にコントロールなどのいろいろな部品を置く
という感じになるみたいです。


で、場合によってはメインウィンドウをダイアログにしたいことがあります。
ダイアログならリソースエディタでコントロールを簡単に配置できるからです。
それがダイアログウィンドウで、Windows付属の電卓なんかがそうらしいです。
http://wisdom.sakura.ne.jp/system/winapi/win32/win89.html

WNDCLASS構造体のメンバに値を代入するとき、
cbWndExtraメンバの値をDLGWINDOWEXTRAとし
lpszClassNameメンバで決めたクラス名をダイアログリソースのCLASSで指定します。

ウィンドウを作るとき、CreateWindowのかわりにCreateDialogを使います。
第3引数は0
通常は親ウィンドウを指定するのですが、親がない
第4引数はNULL
通常はダイアログプロシージャを指定するのですが、ダイアログウィンドウではWNDCLASSで指定されたプロシージャが使用される

ダイアログウィンドウはウィンドウと同じ扱いなので、作成時にはWM_INITDIALOGではなくWM_CREATEメッセージが送られてきます。



2009.3.25追記
BCC+BCCForm環境の注意点

BCCFormで作ったリソースファイルをそのまま使うことができません。
作ったリソースファイルをテキストエディタで開き、DIALOGの中にCLASSパラメータを追加します。

 IDD_DLG DIALOG ・・・・・・・
 EXSTYLE WS_EX_DLGMODALFRAME
 STYLE WS_POPUP | ・・・・・・
 CAPTION "ダイアログのキャプション"
 CLASS "DLG" // これを自分で入力
 FONT 10, "MS P明朝"
 ・・・・・・
今度は逆にBCCFormで編集することができなくなります。
編集する場合は、リソースファイルをテキストエディタで開いてCLASSパラメータを消します。

0 件のコメント:

コメントを投稿