Windows程序设计学习(2)

一个Windows程序的开发步骤

#include <windows.h>
//1.窗口类需要一个窗口过程,所以先声明一个窗口过程函数
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd )
{
	static TCHAR app_name[] = TEXT("HelloWin");
	
	//2.注册一个窗口类
	WNDCLASS wndclass =
		{
			CS_HREDRAW | CS_VREDRAW,
			WndProc,
			0,
			0,
			hInstance,
			LoadIcon(nullptr, IDI_APPLICATION),
			LoadCursor(nullptr, IDC_ARROW),
			(HBRUSH)GetStockObject(WHITE_BRUSH),
			nullptr,
			app_name
		};
	if(!RegisterClass(&wndclass))
	{
		return 0;
	}

	//3.创建窗口并显示
	HWND hwnd = CreateWindow(app_name, TEXT("The First Window"),
							 WS_OVERLAPPEDWINDOW,
							 CW_USEDEFAULT,
							 CW_USEDEFAULT,
							 CW_USEDEFAULT,
							 CW_USEDEFAULT,
							 nullptr,
							 nullptr,
							 hInstance,
							 nullptr);
	ShowWindow(hwnd, nShowCmd);
	UpdateWindow(hwnd);

	//4.循环消息队列
	MSG msg; //消息结构
	while(GetMessage(&msg, nullptr, 0, 0))
	{
		TranslateMessage(&msg);//转换某些键盘消息
		DispatchMessage(&msg); //将消息发送给窗口过程
	}

	return msg.wParam;

}

//5.窗口过程
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"), nullptr, SND_FILENAME|SND_ASYNC);
		return 0;
	case WM_PAINT:
		{
			hdc = BeginPaint(hwnd, &ps);
			GetClientRect(hwnd, &rect);
			DrawText(hdc, TEXT("Hello, Windows7!"), -1, &rect, DT_CENTER | DT_SINGLELINE | DT_VCENTER);
			EndPaint(hwnd, &ps);
			return 0;
		}
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}

	return DefWindowProc(hwnd, message, wParam, lParam);
}

 

posted @ 2012-05-25 23:13  让代码飞一会儿  阅读(221)  评论(0编辑  收藏  举报