HelloWin程序(窗口与消息)

#include <windows.h>
#pragma comment(lib,"WINMM.LIB")

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
	static TCHAR szAppName[] = TEXT ("Hello win");   //以0结尾字符串
	HWND  hwnd;
	MSG  msg;
	WNDCLASS	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.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	
	wndclass.lpszMenuName = NULL;
	wndclass.lpszClassName = NULL;

	if(!RegisterClass(&wndclass))
	{
		MessageBox(NULL,TEXT("this program is nt"),szAppName,MB_ICONERROR);
		return 0;
	}

	hwnd = CreateWindow(szAppName,
						TEXT("The hello program"),
						WS_OVERLAPPEDWINDOW,
						CW_USEDEFAULT,
						CW_USEDEFAULT,
						CW_USEDEFAULT,
						CW_USEDEFAULT,
						NULL,
						NULL,
						hInstance,
						NULL);

	ShowWindow(hwnd,SW_SHOWNORMAL);
	UpdateWindow(hwnd);

	while(GetMessage(&msg,hwnd,NULL,NULL))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	HDC					hdc;
	PAINTSTRUCT			ps;
	RECT				rect;

	switch(message)
	{
	case WM_CREATE:
		PlaySound(TEXT("hellowin.wav"),NULL,SND_FILENAME | SND_ASYNC);
		return 0;
	case WM_PAINT:
		hdc =  BeginPaint(hwnd,&ps);
		GetClientRect(hwnd,&rect);
		DrawText(hdc,TEXT("hello win2008"),-1,&rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);
		EndPaint(hwnd,&ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd,message,wParam,lParam);
}


原文地址:https://www.cnblogs.com/persuit/p/5402640.html