学VC用MFC编程时必须要搞明白MFC内部的源代码吗?如果需要搞明白我发现里面简直有太多陌生的标识符和语句,我如何才能搞明白呢?如果不需要了解MFC内部机制源码的话那我在编程的时候肯定也是会遇到子类继承基础类或调用基础类成员函数而去查看MFC基础类的源码之类的事情啊,我现在是进退两难,请高手详细指点迷津。

解决方案 »

  1.   

    开始学习把整体的框架,类,消息机制搞懂.
    如果想知道内部的细节,没有必要,可以研究LINUX内核.
      

  2.   

    我是楼主,首先感谢大家的回复,大家都说没有必要,但如果真的没有必要我在编程的时候新建子类肯定要调用WINDOWS提供的基础类的成员函数或构造函数的,如果这些不了解也没法编程啊!举个例子:
    例如有下面一段程序
    void CWriteTableDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    }
    else
    {
    CDialog::OnSysCommand(nID, lParam);
    }
    }
    需要调用CDialog::OnSysCommand,那为什么要调用基类的这个成员函数呢,如果要箱知道就的进到这个基类的成员函数中查看原代码,这不还是要搞懂MFC内部机制原代码吗?
      

  3.   

    没必要学的,多做几个例子就上手了,遇到不明白上查MSDN,网上搜搜,再不行就上坛子里问
      

  4.   


    这种调用跟MFC没关系啊,
    就是重载基类的函数,如果满足我的条件就调用我的实现否则就调用基类的默认实现
      

  5.   

    学习是要分层次的,如果只重宏观不重细节,就只会空谈理论。太重细节不把握方向又可能只见树木不见森林。其实在某个学习层次上是不需要深入研究内部机理的,否则甚至有可能超出学科研究范围。如果你认为你已经对本层次轻车熟路,当然是深入研究更好。举个例子,通常有一些现成的函数供我们使用,我们知道输入什么得到什么就可以了,没有必要非去研究其工作过程。如果你非要研究,也不是不可以,但是你会发现某个语句为什么会这样工作呢?你如果再深入研究,会发现一条语句对应着一系列的机器指令。给CPU某一个指令,CUP会执行什么样的动作呢?你再追究下去会发现数据总线和控制总线上的高低电平....不是不鼓励你深入研究,知识爆炸的时代更重要的抓住主要矛盾,解决一部分问题以后还是要深入研究的,并且是越深入细致越好。所以,初学可以不深入不是世界观,是方法论。
      

  6.   

    先从对话框程序开始  逐渐熟悉MFC 一些常用的类 CPoint CRect CString CWnd 
    知道消息机制  能做一些应用程序出来就 入门了别的SYSMENU 这些 等以后做的多了  就自然知道了 
      

  7.   

    不用,用到什么地方google就行了,只要肯动脑筋、动手google,跟vc,跟windows相关的东西基本都能搜到。
      

  8.   

    建议先看侯捷的《深入浅出MFC》对你理解MFC有很大帮助
      

  9.   

    1:学习怎么使用。
    2:学习为什么这么实现。
    3:学习怎么实现的。
    4:明白原理,避开MFC的局限性。
    5:任意派生CWnd,生成随心所欲的控件。
    6:不使用MFC,完全使用Win23 SDK来编写界面程序。
    7:使用Win32 SDK生成随心所欲的控件。
    8:模拟消息循环,自己写一套界面控件类库。
    9:模拟消息循环,自己写一套没有控件句柄的控件类库。
    A:模拟消息循环,自己写一套没有控件句柄的绘制同控件实现分离的控件类库。
    B:抛开GDI,GDI+,学习D3D渲染。
    C:使用D3D渲染技术来绘制A情况的控件。
    D:你可以直接写网络游戏客户端了。
    E:学习游戏引擎,达到深入了解。
    F:学习TCP/IP协议,达到深入了解。
    G:学习多线程,达到深入了解。
    H:学习数据库,达到深入了解。
    I:学习软件架构。
    J:做项目经理,带游戏团队。
    K:从不会编程到会编程,从会编程到不会编程。(武学中的从无招到有招,从有招到无招,无招胜有招)
      

  10.   

    关键在于应用啊,我也刚学VC,之前都是用C++Builder
    看孙鑫的视频,刚开始一头雾水,呵呵 坚持
      

  11.   

    个人强烈建议先花一个月时间学习c++,vc里的很多东西看不懂其实并不是vc的问题,而是c++的基础不牢的原因。
      

  12.   

    我觉得先把孙鑫老师的VC++深入详解看下,遇到问题再查MSDN
      

  13.   

    感觉应该不是要搞懂MFC的内部源码
    而是要搞懂MFC所提供的各个基础类
    比如CWND CBUTTON里面有啥之类
    MFC的内部源码的话 是一个更深入的话题 比如winmain哪去了···
    这些在学会怎么用之后自然就会想去深究的了~~
      

  14.   

    内部了源代码不用搞明白,但要知道实现的原理,方法,执行的效率什么的,在架构时就可以有所选择.
    比如:一个常用的CString,它的getbuffer()和releasebuffer(),它的内存分配机制.
      

  15.   

    先了解Windows消息机制,如果这个你懂了,再学会如何用MFC,之后更高阶的,就需要知道MFC的内部工作原理了!!
      

  16.   

    如果你心中已经有面向对象的概念,MFC框架还是不难理解的。