今回は、ダイアログボックスにボタンを付けます。 ボタンを押せば、ボタンが押されたことを表示されるようにします。
テキスト表示(ダイアログ) - インコのWindowsSDK で作成したソースを修正します。
ここでは、Reseditで作成する方法も説明します。
流れ
WM_COMMAND
1.ボタンが押されたときに、WM_COMMANDメッセージがきます。
このとき、ウィンドウプロシージャ(メッセージを処理する関数)の3番目の引数(wParam)のうち、下位16ビットは、リソースIDなので、これを処理します。
LOWORD()で、32ビットから下位16ビットを取り出します。
2.SetDlgItemText()でテキストデータを表示
BOOL SetDlgItemText( HWND hDlg, // ダイアログボックスのハンドル int nIDDlgItem, // コントロールID LPCTSTR lpString // 表示するテキスト );
リソースファイル
1.ダイアログボックスにボタン[PUSHBUTTON]を追加
PUSHBUTTON "name", id, x0, y0, width, height, style
name | ボタンに表示する文字列 |
id | コントロールID |
x0 | エディット左上のx座標 |
y0 | エディット左上のy座標 |
width | エディットの幅 |
height | エディットの高さ |
style |
スタイル ウインドウスタイルと、 ボタンのスタイルが指定可能 |
ソースコードの入力
ソースコードは下記のように入れてください。
test.cpp
#include <windows.h> #include "resource.h" // このコード モジュールに含まれる関数の宣言を転送します: BOOL CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow ) { DialogBox(hInstance, TEXT("DIALOG_BOX"), NULL, DialogProc); return 0; } BOOL CALLBACK DialogProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { UINT wmId; switch (msg) { case WM_CLOSE: EndDialog(hWnd, IDOK); break; case WM_COMMAND: wmId = LOWORD(wParam); switch (wmId) { case IDC_BUTTON1: SetDlgItemText(hWnd, IDC_STATIC1, TEXT("ボタンが押されました。")); break; } break; } return FALSE; }
resource.h
#define IDC_BUTTON1 1002
#define IDC_STATIC1 1003
#ifndef IDC_STATIC
#define IDC_STATIC -1
#endif
Reseditで作成した場合は、これとは異なるソースコードになります。
上記の太線で示している箇所のみ追加です。
test.rc
#include <windows.h> #include "resource.h" ///////////////////////////////////////////////////////////////////////////// // // ダイアログ // DIALOG_BOX DIALOG 0, 0, 170, 62 FONT 9, "MS UI Gothic" CAPTION "ダイアログ" BEGIN PUSHBUTTON "描写", IDC_BUTTON1, 132, 17, 26, 13 LTEXT "",IDC_STATIC1,4,40,114,8 END
Reseditで作成した場合は、これとは異なるソースコードになります。
上記の太線で示している箇所のみ追加です。