Windows程序运行的机制

 

Windows“进队消息”和“不进队消息”

Windows程序中的消息可以分为“进队消息”和“不进队消息”。进队的消息将由系统放入到应用程序的消息队列中,然后由应用程序取出并发送。不进队的消息在系统调用窗口过程时直接发送给窗口。不管是进队消息还是不进队消息,最终都由操作系统通过调用窗口过程函数对消息进行处理。

 

Windows程序运行的机制

每一个Windows应用程序开始执行后,系统都会为该程序创建一个消息队列,这个消息队列用来存放该应用程序创建的窗口的消息。Windows将产生的消息依次放到消息队列中,而应用程序则通过一个消息循环不断地从消息队列中取出消息,并进行响应。

 

Windows编程创建窗口的步骤:

(1)设计一个窗口类:窗口的特征由WNDCLASS结构体来定义

(2)注册窗口类:RegisterClass

(3)创建窗口:CreateWindow

(4)显示及更新窗口:ShowWindow、UpdateWindow

(5)消息循环

 

Windows应用程序的消息处理过程:    

         (1)操作系统接收到应用程序的窗口消息,将消息投递到该应用程序的消息队列中;

         (2)应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息。取出消息后,应用程序可以对消息进行一些预处理,例如放弃对某些消息的响应,或者调用TranslateMessage产生新的消息;

         (3)应用程序调用DispatchMessage将消息回传给操作系统。消息是由MSG结构体对象表示的,其中就包含了接收消息的窗口的句柄,因此DispatchMessage函数总能进行正确的投递;

         (4)系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程对消息进行处理;

 

VC获取与发送消息:

         ①从消息队列中获取消息还可以使用PeekMessage函数,该函数可以指定在获取消息后是否将消息从消息队列中移除。

         ②发送消息可以使用SendMessage和PostMessage函数。SendMessage将消息直接发送给窗口,并调用该窗口的窗口过程进行处理,在窗口过程对消息处理完毕后该函数才返回,即发送不进队消息。PostMessage函数将消息放入与创建窗口的线程相关联的消息队列后立即返回。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值