MFC基础-----消息机制基础

本文针对MFC初学者,介绍MFC的基本概念及工作原理。详细解释了MFC作为消息驱动程序的特点,包括消息循环的工作机制及消息结构。此外,还介绍了窗口句柄的作用。

        对于MFC的初学者,尤其是从win32 console application学起想学MFC application开发的朋友们,一定对MFC很费解。他是怎样工作的?怎样工作顺序?怎么从一个函数跳到另一个函数的?建立工程的时候,怎么又是.cpp,Doc.cpp,又是View.cpp?到底有什么关系,该怎么用?等等一系列的问题。我目前正在学习,想把自己遇到的问题,怎么解决的分享给大家。也希望高手们在看到我们的问题的时候,也可以留言解决,也许你们眼中极为简单的问题,却能困扰我们许久。


       言归正传,我先说一下我的开发工具。我用的是Visual Studo 2010。看网上的评论,发现VS2010相比于之前的版本有很大的进步,尤其是相比于VC++ 6.0,所以我就赶一下时髦用VS2010来用做我的学习开发工具。我看的书是《深入浅出MFC》,《VC++2010开发权威指南》(电子版),这两本书,目前来说,感觉很基础,而且讲的很清楚也很权威。我还看孙鑫老师的MFC学习视频。我觉得这些对我来说已经足够学习了。


       下面就来说说目前学到的问题,首先MFC与之前的dos编程不同,MFC是一个message based, event driven的windows程序,程序的响应不是依靠函数的顺序进行,而且响应由操作系统发来的消息。也就是说,首先,程序在开始创立的时候就已经创建好了消息等待循环这个函数,时刻监视着操作系统给这个应用程序发过来的消息。在程序打开之后,这个函数就一直运行,如果有消息来了,比如,我在某个图标点了鼠标左键,那么操作系统就将这个消息发给应用程序,然后应用程序对这个消息进行相应。如果没有消息,那么就继续循环等待。


现在我们知道了关于消息相应的一个基本流程:操作系统通过消息连接应用程序,通知应用程序有什么消息发生了。下面我们来看看消息的代码定义是什么:


	typedef struct tagMSG 
	{
	HWND hwnd;           //窗口句柄,指向消息要传到的应用程序的窗口的句柄号
   	UINT message;        //消息的代号,而具体到编程当中,需要用宏来表示消息,方便记忆和编程,比如消息ON_WM_LBUTTONDOWN()表示鼠标左键按下
   	WPARAM wParam;       //指定消息的额外信息,比如按下键盘a字母,那么message中就是按下键盘这个事件的代号,wParam中是a字母的ASCII码
   	LPARAM lParam;       //指定消息的额外信息,具体和wParam有什么区别还不知道。。。
   	DWORD time;          //消息传递出去的时间
   	POINT pt;            //当消息传递出去之后,光标在屏幕的坐标
	} MSG;


再来解释句柄。windows程序有很多的窗口,那么定义这个窗口的变量的类型就是句柄,名称是HNDLE,一般用整数来表示。窗口句柄(HWND),图标句柄(HICON),光标句柄(HCURSOR),窗口实例句柄(HINSTANCE)等等。而窗口有很多的资源需要设定,比如窗口的大小,菜单和图标等等,这些资源,操作系统用句柄去寻找,根据句柄号,找到这些资源的响应的存储位置然后进行改动。所以从另一方面来看,句柄也可以当做是指针,只不过是指向窗口的指针



【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值