第一个Windows窗口程序

要点:先把程序代码完整的敲出来,运行看效果。后面在分析程序的流程。不废话了直接上代码。

代码如下:

#include <Windows.h>

//声明消息处理函数
LRESULT WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam);
HINSTANCE hIns;
//Win32的主函数(程序入口函数)
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstnce,
	LPSTR lpCmdLine, int cmdShow)
{
	hIns = hInstance;
	MSG nMsg = {0};  //保存消息的结构体
	HWND hWnd = 0;
	//定义及注册窗口类
	/*1.窗口类定义为数据结构,包含了窗口的各种参数信息。每个窗口都具有窗口类,
	  基于这个窗口类创建窗口。每个窗口类都具有一个名称,使用窗口类之前必须要先注册到操作系统。
	  2.窗口类的分类:1)系统窗口类:系统已经定义好的窗口类,所用应用程序都可以使用(通过类名使用,例如Button、EDIT)
					  2)局部窗口类:由程序员自己定义,当前应用程序中本模块可以使用
					  3)全局窗口类:由程序员自己定义,当前应用程序中所有模块都可以使用*/
	WNDCLASS wc = {0};
	wc.style = CS_HREDRAW | CS_VREDRAW; //窗口类风格
	wc.lpfnWndProc = (WNDPROC)WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;	
	wc.hIcon = LoadIcon(NULL,IDI_WARNING); //窗口类图标 (窗口左上角的图标,以及窗口最小化所显示的图标)
	wc.hCursor = LoadCursor(NULL,IDC_ARROW); //加载光标资源 (鼠标的光标)
	wc.hbrBackground = (HBRUSH)(COLOR_GRAYTEXT); //设置窗口的背景色
	wc.lpszMenuName = NULL;  //加载菜单资源 目前设置为没有菜单资源
	wc.lpszClassName = "Main"; //窗口类名
	RegisterClass(&wc);

	//通过窗口类的类名创建窗口 创建窗口时可以指定窗口类的风格
	hWnd = CreateWindow("Main","Wnd1",WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);

	//显示窗口
	ShowWindow(hWnd,SW_SHOW);
	//更新窗口 发送WM_PAINT消息
	UpdateWindow(hWnd); 
	//消息循坏
	while(GetMessage(&nMsg,NULL,0,0)) //获取消息
	{
		TranslateMessage(&nMsg); //翻译消息
		DispatchMessage(&nMsg); //派发消息
	}
	return 0;
}

LRESULT WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,
	LPARAM lParam)
{
	switch(nMsg)
	{
	case WM_DESTROY:  //窗口销毁时(点击窗口上关闭按钮),WM_DESTROY消息直接被发送到了窗口处理函数中
		{
			PostQuitMessage(0);  //PostQuitMessage 发送WM_QUIT消息到应用程序的消息队列,GetMessage获取WM_QUIT信号返回0,退出消息循环(while循环)
		}
		break;
	}
	return DefWindowProc(hWnd,nMsg,wParam,lParam);  //系统默认的消息处理函数
}

窗口程序的运行效果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值