Win32SDK程序设计02:窗口与消息

本文深入探讨了Windows程序设计中的窗口与消息处理。窗口是屏幕上的矩形区域,接收用户输入并显示输出。创建窗口由操作系统完成,应用程序通过API指定窗口属性。消息循环是程序的核心,处理来自操作系统的消息。窗口类定义了窗口的一般特征,而CreateWindow()指定窗口的独特属性。WM_CREATE和WM_PAINT消息分别用于窗口创建时的初始化和显示更新。窗口消息处理程序定义窗口行为,处理用户输入。文章还区分了队列化和非队列化消息的概念。
摘要由CSDN通过智能技术生成

窗口

  • 进行Windows程序设计,实际上是在进行一种面向对象的程序设计OOP!对象是程序与数据的组合,窗口是一种对象:程序是窗口消息处理程序;数据是窗口消息处理程序保存的信息和Windows为每个窗口以及系统中那个窗口类别保存的信息
  • 窗口类 vs 窗口:窗口类是类型,是模子;窗口是对象,是窗口类的实例
  • 一个窗口就是屏幕上的一个矩形区域,它接收用户的输入并以文字或图形的格式显示输出内容:在屏幕上输出的内容本质上是一个一个像素画出来的
  • 窗口:窗口 + 对话框
  • 创建窗口的工作实际上操作系统完成的,应用程序通过API的参数告诉操作系统需要创建什么样的窗口,例如窗口的宽高,需不需要菜单等等:总而言之,应用程序是指挥操作系统干活的,真正干活的是操作系统(操作系统就是提供服务器的)
  • Windows操作系统给应用程序发消息:Windows操作系统将感知的事件封装成消息结构放到应用程序的消息队列中
  • 应用程序呼叫调用操作系统:应用程序调用了操作系统提供的接口函数,例如CreateWindow:CPU控制权从用户态切换到核心态
  • 操作系统呼叫应用程序:回调函数Callback:CPU控制权从核心态切换到用户态
  • syscall vs callback
  • 在建立窗口前为什么要注册窗口类?一切权利归农会(操作系统就是这个农会)操作系统是管理所有资源的大管家(当然报个应用程序以及应用程序中的窗口);窗口是窗口类的实例,也就是说窗口是基于特定类型的窗口类来创建的;真正创建窗口的工作是操作系统,所以操作系统必须知道创建窗口的类型长什么样子;创建窗口之前必须到农会(操作系统)哪里登记注册
#include <windows.h>
#include <trace.h>

// 窗口过程
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

// Windows应用程序的入口
int WINAPI WinMain(HINSTANCE hInstance,		// 应用程序实例句柄
				   HINSTANCE hPreInstance,	// 永远为NULL
				   PSTR lpCmdLine,			// 命令行参数
				   int nCmdShow				// 窗口显示方式:SW_SHOW
				   ) {
   
	static TCHAR szWndClsName[] = TEXT("HelloWin");
	HWND hwnd;			// 创建句柄
	MSG msg;			// 消息对象
	WNDCLASS wndclass;	// 窗口类

	// ==========================================================================================
	// 窗口类属性赋值
	wndclass.style			= CS_HREDRAW | CS_VREDRAW;				// 窗口的样式
	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;									// 窗口类的菜单
	wndclass.lpszClassName  = szWndClsName;							// 窗口类的名称:标识窗口类
	wndclass.lpfnWndProc	= WndProc;								// 窗口过程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值