vc++问题。 求答案

来源:百度知道 编辑:UC知道 时间:2024/05/30 01:44:36
1.windows 应用程序中有哪些消息?他们的消息路由是?哪些类能捕捉这些消息?
2.什么是模式和非模式对话框,它们的区别是?
3.对话框控件与其绑定的变量通过函数() 进行数据交换和数据校验,但此函数一般不自动调动,它由()函数调用。
4.工具栏类通过()函数的资源进行连接
5.API应用程序中,它有一个入口程序(),由()处理不同消息响应,它是一个()函数,由用户编写系统调用。
暂时悬赏50.只要答案正确,至少加50分。分不是问题。尽量详细拜托!

1.消息很多,WM_开头的大概 几十个。常用就是鼠标键盘消息(外部驱动消息),象WM_PAINT,WM_SIZE等都是内部消息(线程过滤后生成的)。消息(外部消息主要指键鼠)路由:操作系统捕获消息——》获取当前焦点窗口(子窗口或主窗口),设置MSG结构的hwnd成员——》获取窗口所在线程(是线程不是进程)——》将此消息压入线程的消息堆栈——》线程唤起(系统线程调度唤起的,跟消息驱动无关)——》读取消息栈——》预处理消息——》发送到消息相关窗口——》此窗口过程处理消息。
实际的情况分支更多,尤其是SDI/MDI结构的程序,OnMsgCmd的消息路由来回折腾很繁琐——但是你只要照它的框架来,就不会错的。
消息跟类无关,消息主要是跟窗口句柄相关的,当然也有无窗口消息。消息栈都由线程管理,窗口只处理(或预处理)消息,不管理消息。
2.模态是 domodal()启动的对话框,非模态是 create/showwindow启动的对话框。模态对话框阻塞了线程的消息循环,使用自己的do/while处理消息栈的消息(当然,实际是是通过层层调用还是转到了线程的消息管理相关函数去了)。非模态对话框很简单——属于常规的wndproc方式只使用响应消息,消息驱动管理还是由所在线程来做。
3.DoDataExchange, UpdateData来调用数据交换
4.工具栏类 CToolBar, 通过CreateEx来创建窗口句柄,通过LoadToolBar来装入系统的工具栏资源
5.WinMain,WndProc, 窗口消息处理函数。

1
windows应用程序中的消息太多了,几页都写不完。你想整个操作系统和客户端的软件模块的通信都是由消息来提供的,消息贯穿了整个程序,要知道程序的生死都是消息驱动的。比如说当你需要程序窗口界面关闭的时候,操作系统就会发出个WM_CLOSE的消息,通知主程序做出关闭的动作。另外的还有WM_PAINT啦等等,太多了。
消息路由是这样的:用户做出个动作,系统感应到后发出相应的消息到消息队列,主程序从消息队列里面取出消息(GetMessage)进行一些相关的预处理(TranslateMessage),发给相应的窗口过程函数(DispatchMessage),让其进行处理。