Windows程序设计:一个完整的Windows程序

    C语言Windows编程的主要工作:进行窗体设计、消息循环控制和窗口过程的处理。
Windows程序设计:一个完整的Windows程序_第1张图片

图解:Windows编程模型图解
#include	
#include 
/*
	最简单的windows程序也需要两个函数
	1|主函数int WINAPI WinMain(HINSTANCE histance,	HINSTANCE prevIstance,	LPSTR iCmdLine,	int iCmdShow);
	2|窗口过程函数 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
*/

//2、回调函数,表示:窗口过程	
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//也可以写为:LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


//1、WinMain主函数
int WINAPI WinMain(HINSTANCE histance, 
					HINSTANCE prevIstance, 
					LPSTR iCmdLine, 
					int iCmdShow)
{
	HWND hwnd;//定义一个窗口句柄,用于保存所创建的窗口的句柄
	MSG msg;//定义一个消息【本质上是一个结构体】
	//【1】设计一个窗口的过程,5个步骤
	/*窗体类(结构体)
		typedef struct tagWNDCLASSW {
		UINT        style;	  //窗口样式
		WNDPROC     lpfnWndProc;//窗口过程
		int         cbClsExtra;
		int         cbWndExtra;
		HINSTANCE   hInstance;
		HICON       hIcon;
		HCURSOR     hCursor;
		HBRUSH      hbrBackground;
		LPCWSTR     lpszMenuName;
		LPCWSTR     lpszClassName;
		}
	*/
		//1、设计一个窗口类[本质上是一个结构体],即:对窗口结构体中的各个成员变量的值进行设置
	WNDCLASS wc;//创建一个窗口
	wc.style = 0;//表示是用默认样式
	wc.lpfnWndProc = (WNDPROC)WndProc;//设置窗口过程
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = histance;//实例句柄:设置为主函数参数
	wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);//设置窗口图标
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);//设置鼠标指针
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);//用画刷HBRUSH设置窗口颜色
	wc.lpszMenuName = NULL;//设置菜单为空
	wc.lpszClassName = "MyWndClass";//设置窗口名称
		//2、注册窗口类
	RegisterClass(&wc);//注册窗口类函数
		//3、创建窗口:函数
	hwnd = CreateWindow( TEXT("MyWndClass"), 
						TEXT("Hello SDK Application"), 
						WS_OVERLAPPEDWINDOW, 
						CW_USEDEFAULT, 
						CW_USEDEFAULT, 
						CW_USEDEFAULT, 
						CW_USEDEFAULT, 
						NULL,//父窗口句柄
						NULL,//窗口菜单句柄
						histance, 
						NULL);
		//4、显示和更新窗口
	ShowWindow(hwnd, iCmdShow);//显示窗口
	UpdateWindow(hwnd);//更新窗口之后,则窗口可见
		//5、消息循环【该过程中将消息传递给窗口过程,并由窗口过程进行此消息处理】
	while (GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);//翻译一些特殊的消息
		DispatchMessage(&msg);//转发消息给窗口过程,进行消息处理
	}
	return msg.wParam;//返回值为消息的成员
}

//回调函数:窗口过程的实现
LRESULT CALLBACK WndProc(HWND hwnd,
					UINT message, 
					WPARAM wParam, 
					LPARAM lparam)
{
	//【1】对各种消息进行处理:用选择结构对要处理的进行消息判断,并进行处理;未进去的消息可以不写,由Windows系统自动处理
	switch (message)
	{
		case WM_PAINT:
			return 0;
		case WM_DESTROY://销毁/关闭窗口的消息
			PostQuitMessage(0);//窗口关闭消息传递函数
			return 0;
		default:
			break;
	}
	return DefWindowProc(hwnd, message, wParam, lparam);

}

结果:
Windows程序设计:一个完整的Windows程序_第2张图片

你可能感兴趣的:(C/C++)