// Stupid "Hello World" example
//
// The user clicks a command button, and a "Hello World"
// message box appears.
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static char szAppName[] = "SayHello" ;
HWND hwnd ;
MSG msg ;
WNDCLASSEX wndclass ;
wndclass.cbSize = sizeof (wndclass) ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION) ;
RegisterClassEx(&wndclass) ;
hwnd = CreateWindow(szAppName, "Hello World",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow(hwnd, iCmdShow) ;
UpdateWindow(hwnd) ;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg) ;
DispatchMessage(&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam,
LPARAM lParam)
{
int wNotifyCode ;
HWND hwndCtl ;
static HWND hwndButton ;
static RECT rect ;
static int cxChar, cyChar ;
HDC hdc ;
PAINTSTRUCT ps ;
TEXTMETRIC tm ;
switch (iMsg)
{
case WM_CREATE :
hdc = GetDC(hwnd) ;
SelectObject(hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;
GetTextMetrics(hdc, &tm) ;
cxChar = tm.tmAveCharWidth ;
cyChar = tm.tmHeight + tm.tmExternalLeading ;
ReleaseDC(hwnd, hdc) ;
GetClientRect( hwnd, &rect ) ;
hwndButton = CreateWindow("BUTTON", "&Say Hello",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
(rect.right-rect.left)/20*9,
(rect.bottom-rect.top)/10*4,
14 * cxChar, 3 * cyChar,
(HWND) hwnd, 1,
((LPCREATESTRUCT) lParam) -> hInstance, NULL) ;
return 0 ;
case WM_SIZE :
rect.left = 24 * cxChar ;
rect.top = 2 * cyChar ;
rect.right = LOWORD (lParam) ;
rect.bottom = HIWORD (lParam) ;
return 0 ;
case WM_PAINT :
InvalidateRect(hwnd, &rect, TRUE) ;
hdc = BeginPaint(hwnd, &ps) ;
EndPaint(hwnd, &ps) ;
return 0 ;
case WM_DRAWITEM :
case WM_COMMAND :
wNotifyCode = HIWORD(wParam) ;
hwndCtl = (HWND) lParam ;
if ((hwndCtl == hwndButton) && (wNotifyCode == BN_CLICKED))
MessageBox(hwnd, "Hello, World!", "Greetings", MB_OK) ;
ValidateRect(hwnd, &rect) ;
break ;
case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
}