Windows Program では多くの場合、プログラムのパラメータの設定などは Dialog Box を通じて行います。これは、ほぼ独立した Window とみなして よく、書き方もいままで述べた Window Programming Style と、ほとんど 同じです。概略を述べると、
ここでは、前回では実装していなかった、 ID_FILE_CMNDに対する処理として、Dialog Box を使ってみましょう。
まず、"Ok" と "Cancel" の二つのボタンを持つ Dialog Box を作って みます。Main Menu で "File"-"Command" が選ばれたら、この Dialog Box が 現れ、どちらかのボタンを押すと、元へ戻るものとします。
最初に、Dialog Box Template を Resource File に作ります。これは Resource Editor を使うのが一般的ですが、ここでは強引にテキストエディタ (メモ帳など)で作ってみます。ボタンが押された時の ID としては、 windows.hに用意されている IDOK と IDCANCEL を 使います(システムに用意されている ID を使う場合は、自分の使って いる ID と重複しないように注意すること。 筆者の環境では IDOK は 1、IDCANCEL は 2 となっている。 もちろん別の ID を用意して使ってもよい)。この書き方は、メニューの 場合とよく似ています。ただし、Dialog Box の位置や大きさを指定する パラメータが入ります。前回のメニューも含めて例を示します。
#include <windows.h> #include "resource.h" MyMenu MENU DISCARDABLE BEGIN POPUP "File" BEGIN MENUITEM "Command", ID_FILE_CMND MENUITEM SEPARATOR MENUITEM "Exit", ID_FILE_EXIT END END MyCmndDlg DIALOG DISCARDABLE 0, 0, 128, 64 STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU CAPTION "My Command Dialog" BEGIN DEFPUSHBUTTON "Ok", IDOK, 24, 24, 48, 12 PUSHBUTTON "Cancel", IDCANCEL, 72, 24, 48, 12 ENDこの例では、Dialog Box は、親の Window の左上(位置 (0,0))に、幅 128 ドット、 高さ 64 ドットで現れます。その中にボタンは二つあって、一つは デフォルトボタンで、Dialog Box の中で (24,24) の位置に幅 48 ドット、 高さ 12 ドットで、中に "Ok" と書かれたボタンとして現れ、もう一つは位置 (72,24) で同じ大きさで中に "Cancel" と書かれたボタンとして現れます。 例えば "Ok" の方のボタンが押されると、IDOK を伴ったメッセージが 送られます。