#include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return -1; hwnd = CreateWindow( TEXT("KITTY") , TEXT("Kitty on your lap") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); CreateWindow( TEXT("BUTTON") , TEXT("Kitty") , WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON , 0 , 0 , 100 , 50 , hwnd , NULL , hInstance , NULL ); CreateWindow( TEXT("BUTTON") , TEXT("Kitty") , WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON , 0 , 50 , 100 , 50 , hwnd , NULL , hInstance , NULL ); if (hwnd == NULL) return -1; while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg); return msg.wParam; }
定数 | 解説 |
---|---|
BN_CLICKED | ボタンをクリック |
BN_DBLCLK | ユーザーが BS_OWNERDRAW または BS_RADIOBUTTON スタイルを持つ ボタンをダブルクリックするとき |
BN_DISABLE | ボタンが使用不能 |
BN_DOUBLECLICKED | BN_DBLCLK と同じ |
BN_HILITE | ユーザーがボタンを選択 |
BN_KILLFOCUS | キーボードフォーカスを失った ボタンは、この通知メッセージを送るために BS_NOTIFY スタイルを持たなければならない |
BN_PAINT | ボタンを再描画しなければならない |
BN_PUSHED | BN_HILITE と同じ |
BN_SETFOCUS | キーボードフォーカスを得た ボタンは、この通知メッセージを送るために BS_NOTIFY スタイルを持たなければならない |
BN_UNHILITE | ハイライトがボタンから削除されなければならない |
BN_UNPUSHED | BN_UNHILITE と同じ |
#include <windows.h> #define BUTTON_ID1 0 #define BUTTON_ID2 1 LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_COMMAND: switch(LOWORD(wp)) { case BUTTON_ID1: MessageBox(hwnd , TEXT("BUTTON_ID1") , TEXT("Kitty") , MB_OK); break; case BUTTON_ID2: MessageBox(hwnd , TEXT("BUTTON_ID2") , TEXT("Kitty") , MB_OK); break; } return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return -1; hwnd = CreateWindow( TEXT("KITTY") , TEXT("Kitty on your lap") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); CreateWindow( TEXT("BUTTON") , TEXT("Kitty") , WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON , 0 , 0 , 100 , 50 , hwnd , (HMENU)BUTTON_ID1 , hInstance , NULL ); CreateWindow( TEXT("BUTTON") , TEXT("Kitty") , WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON , 0 , 50 , 100 , 50 , hwnd , (HMENU)BUTTON_ID2 , hInstance , NULL ); if (hwnd == NULL) return -1; while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg); return msg.wParam; }今度のプログラムは、ボタンを押すとメッセージボックスを表示します