您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 新手上路 > VC教程 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

利用Visual C++/MFC开发Windows程序
2001-10-02· · ··vchelp

  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开发的基本思路了。
■ 相关内容
 MFC文件浏览程序中改变文件读写对话框样式
 在存储过程中调用外部的动态连接库
 COM中的可连接对象与连接点机制及其MFC程序实现
 在VC++6.0中用MFC进行COM编程
 在Visual C++中用ADO进行数据库编程
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!