MFC中动态创建一个控件

在View类中动态创建一个Edit控件如下:  
   
  editT1.Create(ES_MULTILINE   |   WS_CHILD   |   WS_VISIBLE   |   WS_TABSTOP   |   WS_BORDER,CRect(0,0,50,20),this,   IDC_EDITT1);  
   
  现在想实现类似对话框中的数据交换功能。  
   
  我的方法是:  
  void   CMatlabPrintView::DoDataExchange(CDataExchange*   pDX)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  CView::DoDataExchange(pDX);  
  //{{AFX_DATA_MAP(CMatlabPrintView)  
  DDX_Text(pDX,   IDC_EDITT1,   m_dT1);  
  //}}AFX_DATA_MAP  
  }  
   
在运行DoDataExchange时,你的编辑框还没有生成,IDC_EDITT1和m_dT1当然关联不上.  
  _____________________________________________________________________________  
  我同意着个说法,所以我的做法是:  
  在初始化(OnInitDialog())函数里加:  
                    editT1   =   new   CEdit();//要加这条语句  
  editT1->Create(ES_MULTILINE   |   WS_CHILD   |   WS_VISIBLE    
  |   WS_TABSTOP   |   WS_BORDER,CRect(0,0,50,20),this,   IDC_EDITT1);  
  在函数的开头声名一个全局的控件变量:CEdit   *editT1;  
  在函数的其他地方使用editT1去处理这个edit,如:editT1->SetWindowText("edit");

  IDC_EDITT1为自定义资源ID

  VC里程序的资源定义,后面的数字只是为了表示特定的资源,避免重复,具体的值并没有意义。
#define IDD_ABOUTBOX 100 就是说有个ID为IDD_ABOUTBOX的对话框资源
posted @ 2009-07-27 15:57  dzqabc  阅读(5912)  评论(1编辑  收藏  举报