: :请教:

解决方案 »

  1.   

    一个MFC程序有无数的事情都是在构造的时候做的
      

  2.   

    xiaoxiao能不能随便举几个例子,我觉得很胡涂
      

  3.   

    对不起,我凭印象想当然的说"MFC程序有无数的事情都是在构造的时候做的",现在想举例子才发现原来很多类的构造函数都是空的,多数事情是在InitInstance、OnCreate或InitDialog等初始化函数中专门进行的。构造函数一般来讲通常只进行变量初始化和内存的申请等,但由于这个函数是由你编写的,所以正如maoxianwang大侠说的,你可以在里面干你任何想干的事。
    比如在头文件MyClass.h中你定义了一个类:
    class MyClass  
    {
    public:
    MyClass();
    virtual ~MyClass();
    int nVal;
    private:
    int len;
    int capacity;
    char *pClassContent;
    };
    然后在文件MyClass.cpp中你可以编写这些函数的实现:
    MyClass::MyClass()
    {
    pClassContent=new char[1024];
    capacity=1024;
    len=0;
    nVal=10000;
    }MyClass::~MyClass()
    {
    delete pClassContent;
    }
    这样在其他地方使用这个类时当用MyClass定义一个变量时
    MyClass myA;
    到这句话时就会自动调用类的构造函数MyClass::MyClass(),于是以后myA中的值就有了确定的值,MyA.nVal就等于10000了,而myA.pClassContent也预先分配了1024字节的空间,这些是通常的做法。而如果你愿意,你也可以在MyClass::MyClass()里面打开文件进行读入,或创建线程,打开窗体等都可以干。这些东西任何一本vc的书上都有,本来应该由你自己去领会,我不应该给你讲的,但因为我说错了话,怕误导你,所以还是说清楚的好。如果你对这些已经滚瓜烂熟了,只是想了解MFC的工作过程的话,你应该去看《深入浅出MFC》,那上面讲了各种windows程序窗口生成的来龙去脉。祝你好运!lucky!enjoy!
      

  4.   

    紧紧给定义的变量分配资源吗,那么定义的函数呢?
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    你这句话好像是问系统都给你的类分配了什么资源,是的,系统只给类的变量分配新的资源,而一个类的所有实例的函数都是共用同一段内存空间(除了虚函数),只是调用函数时传入的变量不同罢了,运行时结果又存回各自实例的变量中。这些在《深入浅出MFC》中也有详细叙述。假如上面的类中还有一个函数int MyFun();
    int MyClass::MyFun()
    {
    return nVal;
    }
    使用
    MyClass myA,myB;
    myB.nVal=200;
    时内存中只有一份MyFun(),两个实例MyA,MyB都使用这同一个函数,但各自的变量都是分开的,调用myA.MyFun()将返回myA.nVal,即10000,myB.MyFun()将返回myB.nVal,即200。