在使用mfc编程的时候,有时候要通过建立类向导为对话框上面的一些控件,比如说文本框,添加成员变量。这些成员变量的定义一般放在//{{AFX_DATA(对话框类名)
   enum { IDD = 对话框ID };
   //成员变量
//}}AFX_DATA里面。但如果手工为一个文本框在上面添加一个成员变量,在建立类向导中又不能显示出来,也就是没有和具体的文本框控件联系起来。我想知道如果想手工为文本框控件添加成员变量,怎样才能把这个变量和具体的文本框控件联系起来。如果想用一个成员数组联系几个文本框呢?要为其他的控件增加成员变量呢?

解决方案 »

  1.   

    可以自己设置一些肋的成员变量
    然后通过程序取得或者赋予控件的值
    比如,取得控件的当前值(以CEdit为例)
    定义
    CEdit* pEdit;
    pEdit = (CEdit*) GetDlgItem(IDC_EDIT1);CString buffer = pEdit->GetLine() ; 
      

  2.   

    菜单——VIEW——ClassWizard——Member Variables页
    在左边选一个控件ID,按【增加变量】那相关联了
      

  3.   

    VIEW——ClassWizard——Member Variables 双击EDIT的ID,填上变量名就可以关联!
      

  4.   

    我同意 zhang_dq(虾米) 的办法。
      

  5.   

    一般是用class wizard添加如果要手工添加的话,.h和.cpp里面都要加上相应代码
      

  6.   

    通过DDX机制
    VIEW——ClassWizard——Member Variables 双击EDIT的ID,填上变量名就可以关联!
    然后搜索变量名,看一下就知道了
      

  7.   

    你照着Class Wizard 生成的代码,自己添加就行了,无非就在头文件和源文件中。
    要调用一个控件的命令就是:
    回复人: SeainBlue(爱海) ( ) 信誉:100  2003-10-21 13:52:00  得分:0 
     
     
      可以自己设置一些肋的成员变量
    然后通过程序取得或者赋予控件的值
    比如,取得控件的当前值(以CEdit为例)
    定义
    CEdit* pEdit;
    pEdit = (CEdit*) GetDlgItem(IDC_EDIT1);CString buffer = pEdit->GetLine() ;  他的方法应该可以了。
      

  8.   

    用classwizard给控件加上变量,他们自动产生关联啦!!
      

  9.   

    ====================================================================
     mac_forward(大麦克) ( ) 信誉:100  2003-10-21 14:48:00  得分:0 
     
     
      用classwizard给控件加上变量,他们自动产生关联啦!!
    ====================================================================我是说如果不用classwizard的话,怎么让他们关联呢?因为我想用一个数组来关联很多的文本框。不知道这个用classwizard可以完成吗?  
     
      

  10.   

    菜单——VIEW——ClassWizard——Member Variables页
    在左边选一个控件ID,按【增加变量】那相关联了
      

  11.   

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!====================================================================
     mac_forward(大麦克) ( ) 信誉:100  2003-10-21 14:48:00  得分:0 
     
     
      用classwizard给控件加上变量,他们自动产生关联啦!!
    ====================================================================我是说如果不用classwizard的话,怎么让他们关联呢?因为我想用一个数组来关联很多的文本框。不知道这个用classwizard可以完成吗?  
     
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  12.   

    如果通过Ctrl+w向导添加变量,则向导会帮你建立
    DDX_Control(...)数据交换,将变量和控件联系起来.如果不用这个机制,就用SubClassDlgItem(...)来子类化某个变量,将变量和控件联系起来
      

  13.   

    一般都是用classwizard 来把控件和成员变量关联起来的,这样比较方便。但是可以用手动的方法把控件和变量关联起来。这就要用到DDX机制,你可以从.h和.cpp文件中找到含有标志的地方加上你的成员变量和控件名称。
      

  14.   

    Paris_Luo(不懂)
    keiven()谢谢。我试一下
      

  15.   

    楼上的,人家问的不是用classwizard怎么实现的!不知道就不要呱呱叫!!
    在类的头文件中这样定义:
    //{{AFX_DATA(对话框类名)
       enum { IDD = 对话框ID };
       //成员变量
       CStrint  m_Edit[100];
    //}}AFX_DATA
    然后再实现文件中的::DoDataExchange(CDataExchange* pDX)函数中添加代码如下:
       //{{AFX_DATA_MAP(CStorageManageView)
       DDX_Text(pDX, IDC_EDIT1, m_EDIT[0]);
       DDX_Text(pDX, IDC_EDIT2, m_EDIT[1]);
    .......
       DDX_Text(pDX, IDC_EDIT100,m_EDIT[2]);
       //}}AFX_DATA_MAP
    这里的IDC_EDIT1、IDC_EDIT2...IDC_EDIT100是自己给EDIT控件定义的ID,m_EDIT[0]是关联到对应ID的变量。当然你也可以这样DDX_Text(pDX, IDC_EDIT2, m_EDIT[0])关联m_EDIT[0]和IDC_EDIT2,显然这样很不明了!
      

  16.   

    更正:上面的DDX_Text(pDX, IDC_EDIT100,m_EDIT[2]);应该是:
    DDX_Text(pDX, IDC_EDIT100,m_EDIT[99]);
      

  17.   

    如果不用wizard 应该自己手动添加ddx等代码吧