vc拓展编程实例99710

vc拓展编程实例99710

ID:34151129

大小:890.03 KB

页数:36页

时间:2019-03-04

vc拓展编程实例99710_第1页
vc拓展编程实例99710_第2页
vc拓展编程实例99710_第3页
vc拓展编程实例99710_第4页
vc拓展编程实例99710_第5页
资源描述:

《vc拓展编程实例99710》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、下载第三部分内部处理实例应用程序并不仅仅等于用户界面。从读取、写入文件到定时事件、多任务,有大量的处理工作都在后台进行着。虽然MFC被人们熟知为界面开发系统,但是在MFC类库中同样具备一些类,它们可提供对应用程序中的非界面部分的支持。这部分中的例子涉及大量应用程序内部的处理工作。这些例子包括程序内的多任务和发送、接收信息,还包括演奏声音和制作定时器。第13章消息和通信这一章中的实例涉及应用程序内部和外部发送数据和消息。通常有两种方法处理消息队列中的消息。这一章中还给出了除使用窗口消息之外的其他三种与外部世界通信的方式,包括Windowssocket(套接字)和低级串行I/O。第14章多任

2、务这一章中的实例涉及应用程序的处理过程,包括多任务、后台处理和其他应用程序的执行。第15章其他最后的章节中收集了内部过程处理的一些其他实例。其中将介绍定时器、二进制字符串和VC++的宏指令等内容。第13章消息和通信应用程序之间除了发送窗口消息外,还有一些与外部环境进行通信的其他方式,包括使用串行I/O方式以及在网络上使用套接字方式通信等等。对以上主题的深入讨论在第1章和第3章中已涉及,而在本章中将给出这三种通信方式的实际应用的例子,这些例子包括:实例47等待消息,在本例中将看到如何使用消息处理函数在另一个消息到来之前暂停应用程序的运行。实例48清除消息,在本例中将看到如何清空应用程序的消

3、息队列,以便使后续消息成为最新消息。实例49向其他应用程序发送消息,本例中将创建一条唯一的消息并把它发送给系统中的其他应用程序。实例50与其他应用程序共享数据,在本例中将看到如何向其他应用程序发送大量的数据。296第第第三部分第内部处理实例下载实例51使用套接字与应用程序通信,本例中将使用Window套接字和其他Windows应用程序或任何支持套接字的应用程序(例如UNIX应用程序)进行通信。实例52使用串行I/O,本例中将实现MFC应用程序与串行设备之间的通信。13.1实例47:等待消息1.目标在一个函数中暂停应用程序,直到用户单击鼠标或者按键为止。2.策略当应用程序看起来是空闲时,实

4、际上它在运行函数:CWinApp::Run()。该函数不仅具有查询新消息的逻辑功能,并且完成了大量包括更新用户界面状态和清除临时内存对象在内的应用程序维护工作。因此,如果需要在应用程序中的某个地方停止运行并等待消息,也需要进行这种应用程序维护工作。由于微软提供了CWinApp()::Run()函数的源代码,因此本例将创建该函数的一个新版本,可用于应用程序中的任何地方。为什么要在除CWinApp函数以外的其他地方停顿呢?请参阅本实例结尾有关移植的说明,在此可发现该实例可能的用武之地。3.步骤等待windows消息找到需要应用程序暂停并等待特定消息的位置,并添加以下代码://waittill

5、userclicksonstatusbarbeforeproceedingMSGmsg;BOOLbIdle=TRUE;LONGlIdleCount=0;CWinApp*pApp=AfxGetApp();AfxMessageBox("Intowaitloop.");m_bWait=TRUE;while(m_bWait){//idleloopwaitingformessageswhile(bIdle&&!::PeekMessage(&msg,NULL,NULL,NULL,PM_NOREMOVE)){if(!pApp->OnIdle(lIdleCount++))bIdle=FALSE;}//p

6、rocessnewmessagesdo{//pumpmessagespApp->PumpMessage();//ifweÕredone,letÕsgo...if(!m_bWait)break;//otherwisekeeploopingif(pApp->IsIdleMessage(&msg))第13章第消息和通信第第297下载{bIdle=TRUE;lIdleCount=0;}}while(::PeekMessage(&msg,NULL,NULL,NULL,PM_NOREMOVE));}以上例程将在此等待处理消息和进行应用程序维护,直到m_bWait变为TRUE为止。(如WM_LBUTT

7、ONDOWN消息)。使用ClassWizard给正在等待的消息添加消息处理函数。在其中需设置m_bWait为TRUE。4.注意■该等待例程不仅将消息转发到它们要发送的窗口,还进行后台处理工作。如果省略后台处理,会发现此时仍然可以改变应用程序窗口的尺寸并移动它们,但是这些窗口无法完全重新绘制,而且还在屏幕上留下无用的信息。同时工具栏和状态栏也将停止更新其状态,这是因为以上这些工作都是在后台处理时进行的。■除了等待m_bWait变成TU

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。