1.3 利用Visual C++/MFC开发Windows程序的优势

本文探讨了MFC如何利用C++特性简化Windows应用程序开发过程,特别是通过消息映射机制来处理窗口消息,使开发者能够更加专注于业务逻辑而非底层细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

MFC借助C++的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C++中的对象,这样一来使开发更接近开发语言而远离系统。(但我个人认为了解系统原理对开发很有帮助)

正因为MFC是建立在C++的基础上,所以我强调C/C++语言基础对开发的重要性。利用C++的封装性开发者可以更容易理解和操作各种窗口对象;利用C++的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。

在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单讲述一下这种方法的实现方法:

代码如下
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)	
//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()	
//}}AFX_MSG_MAP
	ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)
END_MESSAGE_MAP()
经过编译后,代码被替换为如下形式(这只是作讲解,实际情况比这复杂得多):
//BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)	
CMainFrame::newWndProc(...)
{
	switch(...)
	{
		//{{AFX_MSG_MAP(CMainFrame)
		//	ON_WM_CREATE()	
		case(WM_CREATE):
			OnCreate(...);
		break;
		//}}AFX_MSG_MAP
		//	ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)
		case(WM_COMMAND):
			if(HIWORD(wP)==ID_FONT_DROPDOWN)
			{
				DoNothing(...);
			}
		break;
	//END_MESSAGE_MAP()
	}
}
newWndProc就是窗口过程只要是该类的实例生成的窗口都使用该窗口过程。

 

所以了解了Windows的消息机制在加上对消息映射的理解就很容易了解MFC开发的基本思路了。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值