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)等等。而窗口有很多的资源需要设定,比如窗口的大小,菜单和图标等等,这些资源,操作系统用句柄去寻找,根据句柄号,找到这些资源的响应的存储位置然后进行改动。所以从另一方面来看,句柄也可以当做是指针,只不过是指向窗口的指针



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值