成员变量与对话框上面的控件(比如说文本框)是怎样联系起来的?

popy007 2003-10-21 01:28:40
在使用mfc编程的时候,有时候要通过建立类向导为对话框上面的一些控件,比如

说文本框,添加成员变量。这些成员变量的定义一般放在

//{{AFX_DATA(对话框类名)
enum { IDD = 对话框ID };
//成员变量
//}}AFX_DATA

里面。但如果手工为一个文本框在上面添加一个成员变量,在建立类向导中

又不能显示出来,也就是没有和具体的文本框控件联系起来。我想知道如果想

手工为文本框控件添加成员变量,怎样才能把这个变量和具体的文本框控件联系起

来。如果想用一个成员数组联系几个文本框呢?要为其他的控件增加成员变量呢?
...全文
375 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
hdqqq 2003-10-22
  • 打赏
  • 举报
回复
DoDataExchange

这个函数
beyondtkl 2003-10-22
  • 打赏
  • 举报
回复
如果不用wizard 应该自己手动添加ddx等代码吧
yanzhaojiang00 2003-10-22
  • 打赏
  • 举报
回复
更正:上面的DDX_Text(pDX, IDC_EDIT100,m_EDIT[2]);应该是:
DDX_Text(pDX, IDC_EDIT100,m_EDIT[99]);
yanzhaojiang00 2003-10-22
  • 打赏
  • 举报
回复
楼上的,人家问的不是用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,显然这样很不明了!
windows_editor 2003-10-22
  • 打赏
  • 举报
回复
GetDlgItem();
popy007 2003-10-21
  • 打赏
  • 举报
回复
Paris_Luo(不懂)
keiven()

谢谢。我试一下。。。
keiven 2003-10-21
  • 打赏
  • 举报
回复
一般都是用classwizard 来把控件和成员变量关联起来的,这样比较方便。但是可以用手动的方法把控件和变量关联起来。这就要用到DDX机制,你可以从.h和.cpp文件中找到含有标志的地方加上你的成员变量和控件名称。
Paris_Luo 2003-10-21
  • 打赏
  • 举报
回复
如果通过Ctrl+w向导添加变量,则向导会帮你建立
DDX_Control(...)数据交换,将变量和控件联系起来.

如果不用这个机制,就用SubClassDlgItem(...)来子类化某个变量,将变量和控件联系起来
tanyaliji 2003-10-21
  • 打赏
  • 举报
回复
左边选一个控件ID,按【增加变量】那相关联了
Bandry 2003-10-21
  • 打赏
  • 举报
回复
你这样恐怕不行吧
popy007 2003-10-21
  • 打赏
  • 举报
回复
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

====================================================================
mac_forward(大麦克) ( ) 信誉:100 2003-10-21 14:48:00 得分:0


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

我是说如果不用classwizard的话,怎么让他们关联呢?因为我想

用一个数组来关联很多的文本框。不知道这个用classwizard可以完成吗?

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
hardstudylulin 2003-10-21
  • 打赏
  • 举报
回复
菜单——VIEW——ClassWizard——Member Variables页
在左边选一个控件ID,按【增加变量】那相关联了
popy007 2003-10-21
  • 打赏
  • 举报
回复
====================================================================
mac_forward(大麦克) ( ) 信誉:100 2003-10-21 14:48:00 得分:0


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

我是说如果不用classwizard的话,怎么让他们关联呢?因为我想

用一个数组来关联很多的文本框。不知道这个用classwizard可以完成吗?



woaini5994 2003-10-21
  • 打赏
  • 举报
回复
把控件设置成控件类型就可以了
然后调用自身的成员函数
mac_forward 2003-10-21
  • 打赏
  • 举报
回复
用classwizard给控件加上变量,他们自动产生关联啦!!
MicoInNet 2003-10-21
  • 打赏
  • 举报
回复
你照着Class Wizard 生成的代码,自己添加就行了,无非就在头文件和源文件中。
要调用一个控件的命令就是:
回复人: SeainBlue(爱海) ( ) 信誉:100 2003-10-21 13:52:00 得分:0


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

CString buffer = pEdit->GetLine() ;

他的方法应该可以了。
wuxfBrave 2003-10-21
  • 打赏
  • 举报
回复
通过DDX机制
VIEW——ClassWizard——Member Variables 双击EDIT的ID,填上变量名就可以关联!
然后搜索变量名,看一下就知道了
Viconia 2003-10-21
  • 打赏
  • 举报
回复
一般是用class wizard添加

如果要手工添加的话,.h和.cpp里面都要加上相应代码
stonexl 2003-10-21
  • 打赏
  • 举报
回复
我同意 zhang_dq(虾米) 的办法。
zhang_dq 2003-10-21
  • 打赏
  • 举报
回复
VIEW——ClassWizard——Member Variables 双击EDIT的ID,填上变量名就可以关联!
加载更多回复(2)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧