- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章_实例
第十二章 实例--面向对象的Windows应用程序框架 主要内容 消息驱动的程序结构 面向对象的Windows程序结构 MFC对面向对象Windows程序的支持 应用向导、类向导和资源管理器 Windows应用程序的类型 单文档 只能对一个文档的数据进行操作的应用程序。 必须首先结束当前文档的所有操作之后,才能进行下一个文档的操作。 多文档 同时可以对多个文档的数据进行操作的应用程序。 不必等到一个文档的所有操作结束,就可以对其它文档进行操作,对不同文档的操作是在不同的子窗口中进行的。 对话框 以对话框的形式操作一个文档数据的应用程序。 对文档数据的操作以各种“控制”(control)来实现。 程序以按确定或取消按钮来结束。 消息驱动的程序结构 Windows是一种基于图形用户界面的多任务操作系统。 Windows应用程序的结构属于消息(事件)驱动的计算模型,程序的任何一个动作都是在接收到一条消息(每条消息都会带有参数)后发生的,其中的消息有: WM_KEYDOWN/WM_KEYUP(键盘按键) WM_CHAR(字符) WM_LBUTTONDOWN/WM_LBUTTONUP(鼠标左键) WM_LBUTTONDBLCLK (鼠标左键双击) WM_COMMAND(菜单) WM_PAINT(窗口内容刷新) 大部分的消息都关联到某个窗口,而每个窗口都有一个消息处理过程(函数)。 每个Windows应用程序都有一个消息队列。 Windows系统会把属于各个应用程序的消息放入各自的消息队列 应用程序不断地从自己的消息队列中获取消息并调用相应的窗口消息处理函数来处理获得的消息。这个“取消息-处理消息”的构成了消息循环,该循环一直到用户以某种方式结束程序运行时结束。 每个Windows应用程序都必须提供一个主函数:WinMain,程序的执行从WinMain开始。WinMain的主要功能是: 注册窗口类(要创建的窗口的种类) 创建应用程序的主窗口 进入消息循环 WinMain(...) { //注册窗口类 //创建主窗口 //进入消息循环 while (GetMessage(...)) { DispatchMessage(...)); } } #include windows.h //Windows所提供的功能的声明文件。 //主窗口的消息处理函数。 LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); //Windows应用程序的主函数。 int APIENTRY WinMain(HINSTANCE hInstance, //本实例标识(Handle) HINSTANCE hPrevInstance, //上一个实例标识 LPSTR lpCmdLine, //命令行参数 int nCmdShow //主窗口显示方式 ) { //注册窗口类 RegisterClass(..., WindowProc,…,my_window_class); //创建并显示主窗口 HWND hWnd; hWnd=CreateWindow(my_window_class,…,x,y,width,height,...); ShowWindow(hWnd,...); //消息循环,直到接收到WM_QUIT消息 while (GetMessage(msg, NULL, 0, 0)) //从消息队列中取消息。 { TranslateMessage(msg); //对某些消息进行翻译,产生额外的消息 DispatchMessage(msg); //把消息发送到程序相应的窗口。 } return msg.wParam; } LRESULT CALLBACK WindowProc(HWND hWnd, //窗口标识 UINT message, //消息标识 WPARAM wParam, //消息的参数1 LPARAM lParam //消息的参数2 ) { switch (message) { case WM_KEYDOWN: ...wParam... //wParam为按键
您可能关注的文档
最近下载
- 牛津译林版小学英语二年级上册期末测试卷(含听力+答案解析).doc VIP
- 一种电动汽车充电桩的新型电弧故障检测方法.pdf VIP
- 电气五防闭锁培训课件.pptx VIP
- 电气五防安全培训课件.pptx VIP
- 电气五防操作培训课件.ppt VIP
- 结构专业图集-15G368-1预制钢筋混凝土阳台板、空调板及女儿墙.pdf VIP
- 2024年呼伦贝尔职业技术学院单招职业技能测试题库word版.docx VIP
- 《2025年充电桩运维白皮书:超快充设备故障诊断与效率改进》.docx VIP
- 城市综合发展指数报告2025.pptx VIP
- Zilliz(刘力):Milvus:百亿级向量数据库的探索.pptx VIP
原创力文档


文档评论(0)