看《深入浅出MFC》,对动态创建感觉没理解透。
问应用程序设计会用到动态创建吗?
什么情况下用到动态创建,new CEdit是不是?

解决方案 »

  1.   

    某些时候是需要动态创建的,比如你在设计时无法确定控件数量的情况下.
    举例:当你在QQ上双击一个好友头像的时候,会创建一个聊天窗口,而设计期是不可能知道你有多少好友、会同时打开多少个聊天窗口.
    另外,new CEdit只是新建一个CEdit的实例,这时候还没有把控件创建出来.
    CEdit* pEdit=new CEdit();
    pEdit.Create(,,,,,);//用MFC创建控件
    HWND hWnd=::CreateWindowEx(,,,,);//直接用API创建窗口/控件
    sign-----------------------------------------------------------------------

      

  2.   

    楼上,楼主问的是DYN_CREATE那个宏以及其用处吧
      

  3.   

    某些时候是需要动态创建的,比如你在设计时无法确定控件数量的情况下.
    举例:当你在QQ上双击一个好友头像的时候,会创建一个聊天窗口,而设计期是不可能知道你有多少好友、会同时打开多少个聊天窗口.用下面的代码,传入参数,也可以创建60个以下的控件,不是动态创建吧?那动态创建到底意义何在?CEdit* pEdit[60];void (int ecount){
      for(int i=0;i<ecount;i++)
      {
        pEdit[i]=new CEdit(); 
        pEdit.Create(,,,,,);//用MFC创建控件 HWND 
        hWnd=::CreateWindowEx(,,,,);//直接用API创建窗口/控件
      }
      

  4.   

    楼主,你所说的是动态创建,虽然你的规定了指针数量范围大小。
    限制了60大小。但是初始化的数量是ecount的,动态分配的。
      

  5.   


    这个不是问题,稍改一下就可以了:vector <CEdit*>  pCEditvec;
    void (int ecount){
      for(int i=0;i<ecount;i++)
      {
        CEdit *tempEdit=new CEdit(); 
        pEdit.Create(,,,,,);//用MFC创建控件 HWND 
        hWnd=::CreateWindowEx(,,,,);//直接用API创建窗口/控件
         pCEditvec.push_back(tempEdit); 
      }
    }如果这是动态创建,那好像没什么特殊之处,不就是C++的一项功能而已?
      

  6.   

    技术在掌握之后,都觉得没什么特殊之处。针对静态的拖拽控件方式,静态不需要Create,不需要定位。缺乏整体规划动态和静态的区别和优略势还是很明显的
      

  7.   

    你应该问的是那个动态创建的宏DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE吧
      

  8.   


    这个宏,我能理解。我是看侯捷的书中讲到动态创建作为MFC 的 6大关键技术之一 ,然后觉得CEdit *tempEdit=new CEdit(); 
    pEdit.Create(,,,,,);//用MFC创建控件 HWND 好像与 C++中在 堆中 动态分配new 一个 结构 数组 没多大的区别。 为何就成了6大关键技术之一 ?所以我怀疑 动态创建 不是 指  CEdit *tempEdit=new CEdit()这中方式,有此一问。
      

  9.   

    追根究底,MFC六大关键技术剖析 动态创建
    http://blog.csdn.net/liyi268/article/details/310895
    sign-----------------------------------------------------------------------

      

  10.   

    MFC产生得比较早,当时C++还不支持动态识别,微软弄了这么套RTTI,程序可以在运行时通过基类的指针或者引用来得到所指对象的实际类型。
    现在C++有typeid操作符:返回指针或者引用所指对象的实际类型,就是动态识别。不过new应该随c++就有了,动态创建应该不是新技术。侯捷的书中讲到动态创建作为MFC 的 6大关键技术之一,可能是着眼于这一方法在MFC中使用很频繁。