#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;
}
今度のプログラムは、ボタンを押すとメッセージボックスを表示します