Code:
#include <windows.h>
#define ID_BUT1 40000
#define ID_BUT2 40001
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
char szWinName[] = "MyWin";
HINSTANCE hInstMain;
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst,
LPSTR lpszArgs, int nWinMode)
{
HWND hwnd;
MSG msg;
WNDCLASSEX wcl;
hInstMain = hThisInst;
wcl.cbSize = sizeof(WNDCLASSEX);
wcl.hInstance = hThisInst;
wcl.lpszClassName = szWinName;
wcl.lpfnWndProc = WindowFunc;
wcl.style = 0;
wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcl.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
wcl.lpszMenuName = NULL;
wcl.cbClsExtra = 0;
wcl.cbWndExtra = 0;
wcl.hbrBackground = (HBRUSH) GetStockObject(COLOR_3DFACE +1);
if(!RegisterClassEx(&wcl)) return 0;
hwnd = CreateWindow(szWinName,"Buttons",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
HWND_DESKTOP,NULL, hThisInst,NULL);
ShowWindow(hwnd, nWinMode);
UpdateWindow(hwnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
static HWND hBut1,hBut2;
switch(message) {
case WM_CREATE:
hBut1 = CreateWindowEx(0,"Button","Button1",
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
245,5,60,30,hwnd,(HMENU)ID_BUT1,hInstMain,NULL);
hBut2 = CreateWindowEx(0,"Button","Button2",
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
245,150,60,30,hwnd,(HMENU)ID_BUT2,hInstMain,NULL);
break;
case WM_COMMAND:
if(LOWORD(wParam) == ID_BUT1)//test identifier
MessageBox(hwnd,"Button 1","",MB_OK);
if((HWND)lParam == hBut2)//test handle
MessageBox(hwnd,"Button 2","",MB_OK);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}