窗口程序框架

#include <windows.h>
//创建窗口程序的步骤:
//1.创建winMain()主函数 
//2.设计窗口 
//3.注册窗口
//4.创建窗口
//5.显示窗口
LRESULT CALLBACK WndProc(HWND hwnd,
 UINT Message,//消息
  WPARAM wParam,//消息参数 
   LPARAM lParam) {//消息参数 
	switch(Message) {
		case WM_DESTROY: {//当用户关闭窗口,窗口销毁,程序需结束, 发退出消息,以退出消息循环 
			PostQuitMessage(0);
			break;
		}
		default:
			return DefWindowProc(hwnd, Message, wParam, lParam);
	}
	return 0;
}
//1.创建WinMain()主函数
//WINAPI 函数修饰符 被称为栈的数据结构 用来支持参数传递  
int WINAPI WinMain(HINSTANCE hInstance,//该程序当前运行实例的句柄 
					 HINSTANCE hPrevInstance,//当前实例的前一个实例的句柄 
					  LPSTR lpCmdLine,//是一个以空终止的字符串,指定传递给应用程序的命令行参数 
					   int nCmdShow//制定程序的窗口应该如何显示 
					   ) {
	//2.设计窗口				   	
	WNDCLASSEX wc; //窗口属性 
	memset(&wc,0,sizeof(wc));//初始化结构体 
	wc.cbSize= sizeof(WNDCLASSEX);//赋值结构体大小 
	wc.lpfnWndProc	 = WndProc; //窗口处理函数的指针,用来发送信息,回调函数 
	wc.hInstance= hInstance;//实例句柄 
	wc.hCursor= LoadCursor(NULL, IDC_ARROW);// 指向窗口类的指针 
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//窗口类的背景刷,为背景刷句柄 
	wc.lpszClassName = "WindowClass";//指向窗口类的指针 
	//3.注册窗口 
	if(!RegisterClassEx(&wc)) {
		MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}
	//4.创建窗口 
	//创建成功后返回值为窗口句柄类型 
	HWND hwnd;//句柄,或指向窗口的指针 
	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,//窗口的扩展风格 
	"WindowClass",//指定窗口类的名称,设计窗口类中为LpszClassName成员指定的名称 
	"Caption",// 指定窗口类的名字。窗口样式指定了标题栏,窗口名字将显示在标题栏上 
	WS_VISIBLE|WS_OVERLAPPEDWINDOW,//窗口的基本风格 
		CW_USEDEFAULT, /* x */
		CW_USEDEFAULT, /* y */
		640, /* 宽 */
		480, /* 高 */
		NULL,//窗口的父窗口句柄 
		NULL,// 窗口的菜单句柄 
		hInstance,//应用程序实例句柄 
		NULL);//窗口创建时附加参数 
		//5.显示窗口 
		MSG msg;//所有消息的临时位置 
	if(hwnd == NULL) {
		MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}
	while(GetMessage(&msg, NULL, 0, 0) > 0) { //如果没有接受到错误信息,执行下面函数语句 
		TranslateMessage(&msg); //信息转化 
		DispatchMessage(&msg); //消息派遣,把 TranslateMessage转换的消息发送到窗口的消息处理函数 
		//此函数在窗口注册时已经指定 
	}
	return msg.wParam;//指定应用程序退出
}

  

posted @ 2024-05-04 15:19  fushuxuan1  阅读(12)  评论(0)    收藏  举报