VC++学习1:windows内部运行机制

1 句柄

/*
 窗口是通过窗口句柄(HWND)标识的,我们要对某个窗口进行操作,首先就要得到这个窗口的句柄。
 在windows程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源时会为它们分
 配内存,并返回标识这些资源的标识号,即句柄。
 */

2 windows事件驱动机制

/*
 Windows程序,是一种事件驱动的程序设计模式,主要基于消息的。例如,当用户在窗口中画图的
 时候,按下鼠标左键,此时,操作系统会感知这一事件,于是将这个事件包装成一个消息,投递到
 应用程序的消息队列中,然后应用程序从消息队列中取出消息并进行响应。在这个处理过程中,操
 作系统也会给应用程序“发送消息”。所谓“发送消息”,实际上是操作系统调用程序中一个专门负责
 处理消息的函数,这个函数称为窗口过程。
 */

3 消息队列

/*
 每一个windows应用程序开始执行后,系统都会为该程序创建一个消息队列,这个消息队列用来存
 放该程序创建的窗口的消息。例如,当我们按下鼠标左键的时候,就会产生WM_LBUTTONDOWN消息,
 系统会将这个消息放到窗口所属的应用程序的消息队列中,等待应用程序的处理。windows将产生
 的消息依次放到消息队列中,而应用程序则通过一个消息循环不断地从消息队列中取出消息,并进
 行响应。这种消息机制,就是windows程序运行的机制。
 */

4 进队消息和不进队消息

/*
 Windows程序中的消息可以分为“进队消息”和“不进队消息”。进队的消息将由系统放入到应用程序
 的消息队列中,然后由应用程序取出并发送。不进队的消息在系统调用窗口过程中直接发送给窗口
 。不管是进队消息还是不进队消息,最终由系统调用窗口过程函数对消息进行处理。
 */
 /*
 Windows中的消息分为进队消息与不进队消息,
 例如SendMessage为不进队消息,而是直接将消息发送给窗口,执行完SendMessage之后,立即执行消息响应函数,
 PostMessage为进队消息,将消息发送到队列,等待系统将消息挨次取出,执行,
 */

5 windows消息处理机制

/*
 窗口过程函数被调用的过程如下:
 1)在设计窗口类的时候,将窗口过程函数的地址赋值给lpfnWndProc成员变量。
 2)调用RegisterClass(&wndclass)注册窗口类,那么系统有了我们编写的窗口过程函数的地址
 3)当应用程序接收到某一窗口的消息时,调用DispatchMessage(&msg)将消息回传给系统。系统
    则利用先前注册窗口类时得到的函数指针,调用窗口过程函数对消息进行处理。	
 */

在这里插入图片描述
6 GetMessage和PeekMessage区别
在这里插入图片描述
7 SendMessage和PostMessage的区别
在这里插入图片描述
8 设备上下文DC

/*
画图,必须要使用设备上下文DC。在获取DC句柄时,总是和一个指定的窗口相关联。
在响应WM_PAINT消息的代码中,要得到窗口的DC,必须调用BeginPaint函数。
BeginPaint函数只能在WM_PAINT消息的响应代码中使用,在其他地方,只能使用GetDC来
得到DC的句柄。另外,BeginPaint函数得到的DC,必须用EndPaint函数去释放。
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值