c++ mfc中,比如想设计这样,有编辑框,有显示的框,比如怎样把这些框里的内容和数组连系起来?
比如我数组的内容变化了,显示相应的内容就有所变化,或者改动一个编辑框的内容后,所对应数组的内容也相应的变化?这个程序怎样编?用什么思路?...
比如我数组的内容变化了,显示相应的内容就有所变化,或者改动一个编辑框的内容后,所对应数组的内容也相应的变化?这个程序怎样编?用什么思路?
展开
1个回答
展开全部
如果你可以自己制作控件来实现是最好的,控件中包含一个静态文本,包含一个编辑框。而个人感觉你不会这样做,所以提供额外的方法:自己派生一个继承于CEdit的类,在里面处理编辑框内容改变的消息,且有数据成员指向相关的静态文本控件的窗口句柄,一旦编辑框内容改变,发送消息通知静态文本控件,更改内容。如果要通知数组内容的话,就向控件的父窗口发送消息,让父窗口修改数组即可。
个人再建议两点:
1.发送消息给静态文本时可以GetParent()->GetDlgItem(静态文本ID)->SendMessage(...);所以,派生自CEdit的类只需保存相关的静态文本ID值。
2.你可以定义编辑框控制变量数组,实现控制所有的编辑框,方便和数组结合使用,方法为:
假设你派生的类为CXXEdit
则在对话框中定义:
#define EDIT_COUNT 8
CXXEdit m_editCtrlArray[EDIT_COUNT];
在对话框函数DoDataExchange(CDataExchange* pDX)中
int i = 0;
unsigned int IDArray[] = { IDC_EDIT1, ..., IDC_EDIT8}
while(i < EDIT_COUNT)
DDX_Control(pDX, IDArray[i], m_editCtrlArray[i++]);
而为了给m_editCtrlArray[]构造传参,你可以在对话框类的构造函数参数初始化列表中调用其构造函数。
还有,那个派生类如何响应编辑框内容的改变,你可以搜搜资料。
具体的不明白的,再说吧。
个人再建议两点:
1.发送消息给静态文本时可以GetParent()->GetDlgItem(静态文本ID)->SendMessage(...);所以,派生自CEdit的类只需保存相关的静态文本ID值。
2.你可以定义编辑框控制变量数组,实现控制所有的编辑框,方便和数组结合使用,方法为:
假设你派生的类为CXXEdit
则在对话框中定义:
#define EDIT_COUNT 8
CXXEdit m_editCtrlArray[EDIT_COUNT];
在对话框函数DoDataExchange(CDataExchange* pDX)中
int i = 0;
unsigned int IDArray[] = { IDC_EDIT1, ..., IDC_EDIT8}
while(i < EDIT_COUNT)
DDX_Control(pDX, IDArray[i], m_editCtrlArray[i++]);
而为了给m_editCtrlArray[]构造传参,你可以在对话框类的构造函数参数初始化列表中调用其构造函数。
还有,那个派生类如何响应编辑框内容的改变,你可以搜搜资料。
具体的不明白的,再说吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询