0

目前在 MFC 中编写一个基于对话框的应用程序,当按下主对话框上的按钮时,它会创建一个子对话框。子对话框则有 3 个编辑控制框和一个按钮。当按下按钮时,来自三个编辑控制框的信息被检索并存储为单独的 CStrings。这些 CString 被传递给位于 Main Dlg.cpp 中的函数。该函数获取这些字符串并将它们插入到列表控件中。该程序构建良好并一直运行,直到按下添加按钮(在子对话框上)。不知道为什么程序崩溃我似乎有正确的参数?我也不确定这是否是在两个对话框之间传递这样的数据的最佳方式。任何更好的想法也值得赞赏。

弹出添加按钮功能

 void Popup::OnBnClickedPopadd()
   {
    CString str1, str2, str3;
    CThermotronDlg dlg;
    GetDlgItemText(ID_RampEdit,str1);
    GetDlgItemText(ID_DwellEdit,str2);
    GetDlgItemText(ID_TempEdit,str3);

    dlg.ReciveAndDisplay(str1,str2,str3);
   }

接收显示功能

 void CThermotronDlg::ReciveAndDisplay(CString str1, CString str2,CString str3){

    LPCTSTR ramp(str1),dwell(str2),temp(str3);

    MyListEx.InsertItem(1,ramp);
    MyListEx.SetItemText(0,1,dwell);
    MyListEx.SetItemText(0,2,temp);


}
4

1 回答 1

1

无需在弹出对话框中初始化变量CThermotronDlg dlg;,您需要找到主对话框的地址并直接调用此对话框的 ReceiveAndDisplay 方法。一种方法是访问m_pMainWnd应用程序对象的公共变量 ( theApp)。的正确代码OnBnClickedPopadd()将是:

 void Popup::OnBnClickedPopadd()
   {
    CString str1, str2, str3;
    CThermotronDlg *pDlg = (CThermotronDlg*)theApp.m_pMainWnd;
    GetDlgItemText(ID_RampEdit,str1);
    GetDlgItemText(ID_DwellEdit,str2);
    GetDlgItemText(ID_TempEdit,str3);

    pDlg->ReciveAndDisplay(str1,str2,str3);
   }
于 2013-02-06T01:29:33.250 回答