MFC中怎样将一个对话框里的结构数据传递到另一个对话框里显示出来

UFreedom 2012-05-21 05:55:37

这个学生信息对话框有个列表框,旁边有四个编辑框分别是姓名,班级,学号专业,列表框里有学生的名字,当我点击列表框里的名字时,旁边的编辑框就显示有关该学生的信息。
该结构在学生信息对话框的类里边。
数据结构:
public:


struct student
{
CString studentclass;
CString name;
CString subject;
DWORD studentid;
};
初始化:由于我想让这个对话框弹出时就显示信息,我就放到这个对话框类的初始化函数里了。
BOOL CMessage::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here


UpdateData(TRUE);
int nIndex=m_Listbx.AddString("张三");
student student1;
student1.name="张三";
student1.studentclass="软件1101";
student1.studentid=123456;
student1.subject="软件";
m_Listbx.SetItemDataPtr(nIndex,new student(student1));


int nIndex2=m_Listbx.AddString("李四");
student student2;
student2.name="李四";
student2.studentclass="软件1102";
student2.studentid=22657;
student2.subject="软件工程";
m_Listbx.SetItemDataPtr(nIndex2,new student(student2));


int nIndex3=m_Listbx.AddString("王二麻");
student student3;
student3.name="王二麻";
student3.studentclass="软件1101";
student3.studentid=34159;
student3.subject="软件工程";
m_Listbx.SetItemDataPtr(nIndex3,new student(student3));


int nIndex4=m_Listbx.AddString("赵钱");
student student4;
student4.name="赵钱";
student4.studentclass="软件1101";

student4.studentid=12346;
student4.subject="软件工程";
m_Listbx.SetItemDataPtr(nIndex4,new student(student4));


int nIndex5=m_Listbx.AddString("孙李");
student student5;
student5.name="孙李";
student5.studentclass="软件1102";
student5.studentid=341592;
student5.subject="软件工程";
m_Listbx.SetItemDataPtr(nIndex5,new student(student4));

UpdateData(FALSE);



return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
当我在列表框里的学生名字选项改变时,旁边的编辑框也改变,所以另一个函数的代码:
void CMessage::OnSelchangeListname()
{
// TODO: Add your control notification handler code here
int nIndex=m_Listbx.GetCurSel();
if (nIndex!=LB_ERR)
{
student * pstudent=(student *)m_Listbx.GetItemDataPtr(nIndex);
m_OutputName=pstudent->name;
m_OutputSubject=pstudent->subject;
m_OutputId=pstudent->studentid;
m_OutputClass=pstudent->studentclass;
UpdateData(FALSE);
}


}
然后我又做了一个修改对话框,有四个编辑框,分别是姓名,班级,学号,专业,一个应用按钮,一个确定按钮,功能是当我双击列表框的学生名字时,会弹出此修改对话框,此对话框会在编辑框分别显示当前该学生的信息,然后我在编辑框输入我想修改的信息,点击应用,然后确定,当我再次点击学生信息对话框的学生列表的每个学生名的字时,旁边的编辑框就会显示信息,当然如果我在修改对话框把信息修改的话,就会显示我修改后的信息。
接下来就是我的问题,我就卡在当弹出修改对话框时,修改对话框并没有显示当前学生信息。以下是代码。
我把代码放在学生信息对话框的列表框双击时的响应函数里了。
void CMessage::OnDblclkListname()
{
// TODO: Add your control notification handler code here
CChange changedlg;
if (changedlg.DoModal()==IDOK)
{
UpdateData();
int nIndex=m_Listbx.GetCurSel();
if (nIndex!=LB_ERR)
{
student * pstudent=(student *)m_Listbx.GetItemDataPtr(nIndex);
changedlg.m_ChgeName=pstudent->name;
changedlg.m_ChgeSubject=pstudent->subject;
changedlg.m_ChgeId=pstudent->studentid;
changedlg.m_ChgeClass=pstudent->studentclass;

UpdateData(FALSE);
}



}
请问到底是什么问题,是我的结构错了,还是代码的位置错了,还有我在修改对话框那,怎样将我修改后的数据应用到学生信息结构上也没有思路,
请各位朋友,学长,门指点一下小弟。
...全文
187 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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