栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Windows核心机制(1)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Windows核心机制(1)

MSG

typedef struct tagMSG{
	HWND hwnd;	//句柄:资源的标识
	UINT message;
	WPARAM wParam;
	LPARAM lParam; 
	DWORD time;	//消息被传递出去的时间
	POINT pt;		//当消息被投递的时候,光标在屏幕上的一个位置
}MSG, *PMSG;

int WINAPI WinMain(
	HINSTANCE hInstance,	//当前应用程序的实例句柄
	HINSTANCE hPrevInstance,	//上一个应用程序的实例句柄
	LPSTR IpCmdLine,		//命令行(LP开头就是指针类型,STR表示字符串)
	int nCmdShow		//显示的状态
);

窗口的创建步骤:

	(1)设计一个窗口类
	(2)注册窗口类
	(3)创建窗口
	(4)显示及更新窗口

(1)设计一个窗口类

typedef _struct _WNDCLASS{
	UINT style;		//类的类型
	WNDPROC lpfnWndProc;	//回调函数
	int cbClsExtra;		//类的额外的数据
	int cbWndExtra;		//窗口额外的数据
	HINSTANCE hInstance;	//当前应用程序的实例号
	HICON hIcon;		//图标的句柄
	HCURSH hCursor;		//光标的句柄
	HBRUSH hbrBackground;	//画刷的句柄(背景)
	LPCTSTR lpszMenuName;	//(LP长指针,C是常量,所以就是一个常量字符串)菜单名字
	LPCTSTR lpszClassName;	//类的名字
}WNDCLASS, *PWNDCLASS;

回调函数:
原理:当应用程序收到给某一窗口的消息时,就应该调用某一函数来处理这条消息。
这一调用过程不用应用程序自己来实施,而由操作系统来完成,但是,回调函数本身的代码必须
由应用程序自己完成。对于一条消息,操作系统到底调用应用程序中的那个函数(回调函数)来
处理呢?操作系统调用的就是接受消息的窗口所属的类型中的lpfnWndProc成员指定的函数。
每一种不同类型的窗口都有自己专用的回调函数,该函数就是通过ipfnWndProc成员指定的。

(2)注册窗口类

ATOM RegisterClass(
	ConST WNDCLASS *lpWndClass	//窗口类的结构体的指针
);

(3)创建窗口
步骤:定义句柄(HWND):用来保存创建窗口的标识

HWND CreadteWindow(
	LPCTSTR lpClassName,	//注册的类名
	LPCTSTR lpWindowName,	//窗口的名字(标题栏上面的名字)
	DWORD dwStyle,		//窗口的类型
	int x,			//窗口的水平坐标(左上角)
	int y,			//窗口的垂直坐标(左上角)
	int nWidth,		//窗口的宽度
	int nHeight,		//窗口的高度
	HWND hWndParent,	//窗口的句柄(父窗口)
	HMENU hMenu,		//菜单的句柄
	HINSTANCE hInstance,	//当前应用程序的实例号
	LPVOID lpParam
);

(4)显示及更新窗口
显示:

BOOL ShowWindow(
	HWND hWnd,	//显示窗口的句柄
	int nCmdShow	//显示的状态
);

更新:

UpdateWindow(hwnd);

(5)消息循环
1.获取消息:

BOOL GetMessage(
	LPMSG lpMsg,		//消息结构体的指针
	HWND hwnd,		//获得哪一个窗口(句柄)的消息,(设置为NULL:获取属于调用线程的任何消息)
	UINT wMsgFilterMin,	//消息的最小值
	UINT wMsgFilterMax	//消息的最大值
);

取出消息:返回true
当收到WM_QUIT消息的时候返回false

2.翻译消息:

TranslateMessage(
	LPMSG lpMsg,		//消息结构体的指针
);

作用:将取到的消息进行转换

DispatchMessage(
	LPMSG lpMsg,		//消息结构体的指针
);

作用:将收到的消息传到窗口的回调函数

回调函数(过程函数):

LRESULT CALLBACK WindowProc(
	HWND hwnd,		//窗口的句柄
	UINT uMsg,		//消息标识
	WPARAM wParam,		//第一个消息的附加参数
	LPARAM lParam		//第二个消息的附加参数
);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717741.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号