C++ windows程序结构

    一个简单的Windows程序主要包括应用程序主函数WinMain函数和消息处理函数,WinMain函数的主要工作是定义窗口、注册窗口、显示窗口、消息循环;消息处理函数的主要工作是处理干兴趣的消息。下面的示例程序显示了一个简单的窗口程序的结构。

例、一个简单的Windows程序。

    在Visual C++开发环境下,创建一个空的Win32Application工程,添加如下代码

#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);// 申明窗口函数
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdline,
					 int nCmdShow)//Windows程序的入口为WinMain函数
{
	WNDCLASS wndclass;//定义窗口类的结构变量
	HWND hwnd;//定义窗口句柄
	MSG msg;//定义消息结构变量
	wndclass.style=CS_HREDRAW|CS_VREDRAW;//改变窗口大小这重绘
	wndclass.lpfnWndProc=WndProc;//窗口函数为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;//窗口默认无菜单
	//窗口类名为windows窗口创建
	wndclass.lpszClassName=TEXT("windows窗体创建");
	/*注册窗口类*/
	if(!RegisterClass(&wndclass))return false;
	/*创建窗体*/
	hwnd=CreateWindow(TEXT("windows窗体创建"),//窗口类名windows窗体创建
		TEXT("windows窗体创建"),//窗口名windows窗体创建
		WS_OVERLAPPEDWINDOW,//重叠式窗口
		CW_USEDEFAULT,CW_USEDEFAULT,//左上角屏幕坐标默认值
		CW_USEDEFAULT,CW_USEDEFAULT,//窗口大小默认值
		NULL,//无父窗口
		NULL,//无子窗体
		hInstance,//创建值窗体实例句柄
		NULL//值窗体无创建参数
		);
	/*显示并更新窗口*/
	ShowWindow(hwnd,nCmdShow);
	UpdateWindow(hwnd);
	/*消息循环*/
	while (GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);//键盘消息转换
		DispatchMessage(&msg);//发送消息给窗口函数
	}
	return msg.wParam;//返回推出值
}
/*窗口函数*/
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lparam)//参数:句柄,消息,消息参数,消息参数
{
	/*根据消息值转相应的消息处理*/
	switch (message)
	{ 
	case WM_PAINT://重绘窗口客户区消息处理
		HDC hdc;//定义设备描述表句柄
		PAINTSTRUCT ps;//定义绘图星系结构变量
		hdc=BeginPaint(hwnd,&ps);//获取要重绘的窗口的设备描述表句柄
		TextOut(hdc,10,20,TEXT("Hello World!"),strlen("Hello World!"));//输出文本
		EndPaint(hwnd,&ps);//结束要重绘的窗口
		return 0;
	case WM_DESTROY://撤销窗口消息处理
		PostQuitMessage(0);//产生退出程序消息WM_QUIT
		return 0;

	}
	return DefWindowProc(hwnd,message,wParam,lparam);//其他消息交给有系统提供的缺省处理函数
}

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值