设为首页 加入收藏

TOP

C++面试题:Windows程序的入口是哪里?写出Windows消息机制的流程
2014-11-24 01:25:52 来源: 作者: 【 】 浏览:7
Tags:试题 Windows 程序 入口 哪里 写出 消息 机制 流程

A:


入口点是WinMain函数.


Windows消息机制的流程:


1.Windows中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能创建的各种窗口的消息。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。


2.Windows为当前执行的每个Windows程序维护一个「消息队列」。在发生输入事件之后,Windows将事件转换为一个「消息」并将消息放入程序的消息队列中。程序通过执行一块称之为「消息循环」的程序代码从消息队列中取出消息:


while(GetMessage (&msg, NULL, 0, 0))


{


TranslateMessage (&msg) ;


DispatchMessage (&msg) ;


}


TranslateMessage(&msg);将msg结构传给Windows,进行一些键盘转换。


DispatchMessage (&msg);又将msg结构回传给Windows。然后,Windows将该消息发送给适当的窗口消息处理程序,让它进行处理。


SendMessage()与PostMessage()之间的区别是什么?


它们两者是用于向应用程序发送消息的。PostMessagex()将消息直接加入到应用程序的消息队列中,不等程序返回就退出;而SendMessage()则刚好相反,应用程序处理完此消息后,它才返回。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇做了几次.net面试官后的感想 下一篇.net面试题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: