为什么TNT2不能被赋值?代码如下:

我创建了一个非模态对话框(类名为calTNT),里面有一个输入框A(变量为TNT1)。
主窗口(类名为“C测试Dlg”)有一个输入框B(变量为TNT2)。
在按下非模式对话框按钮1后我想将,TNT1的值赋给TNT2,,同时关闭非模式对话框。代码如下:
void calTNT::OnBnClickedOk2()
{
UpdateData(true);
C测试Dlg dlg;
dlg.TNT2=TNT1;
CDialogEx::OnOK();
}

白衣染霜花
浏览 114回答 2
2回答

侃侃尔雅

刚又想到个idea 再来第三种方法void CTestDlg::OnButton3() {// TODO: Add your control notification handler code herestatic calTNT dlg;//想想static int x = 1;是神马语法现象static int flag = 0;if(!flag){dlg.Create(IDD_DIALOG1);flag = 1;}dlg.ShowWindow(SW_SHOW);}模特、非模态两种方法都给你写一个程序里头了 vc6 mfc 对话框工程主对话框类名CTestDlg 弹出的对话框名 calTNT主对话框上添加一个编辑框 两个按钮编辑框关联CString类型变量m_TNT2弹出对话框类 添加一个编辑框 关联变量CString类型m_TNT1给弹出对话框的OK按钮添加响应函数void calTNT::OnOK() {// TODO: Add extra validation hereUpdateData(TRUE);((CTestDlg *)AfxGetMainWnd())->m_TNT2 = m_TNT1;AfxGetMainWnd()->UpdateData(FALSE);CDialog::OnOK();}主对话框类 的头文件和源文件 都加上 弹出对话框类的头文件先来模态的,主对话框的button1 void CTestDlg::OnButton1() {// TODO: Add your control notification handler code herecalTNT dlg;dlg.DoModal();}很简单再来看非模态 给主对话框类添加头文件类声明中添加成员指针变量 和析构函数声明public:calTNT *p;CTestDlg(CWnd* pParent = NULL); // standard constructor~CTestDlg();主对话框类源文件 构造函数中将此指针 初始化为NULLCTestDlg::CTestDlg(CWnd* pParent /*=NULL*/): CDialog(CTestDlg::IDD, pParent){//{{AFX_DATA_INIT(CTestDlg)m_TNT2 = _T("");//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);p = NULL;}添加析构函数实现CTestDlg::~CTestDlg(){if(p){delete p;}}最后按钮2 建立非模态void CTestDlg::OnButton2() {// TODO: Add your control notification handler code hereif(!p){p = new calTNT();p->Create(IDD_DIALOG1);}p->ShowWindow(SW_SHOW);}

一只名叫tom的猫

那有什么意义啊关闭了,可以说就是销毁了。那么所赋值也没了你可以试试构造传参,直接在构造里传递过去啊C测试Dlg dlg(TNT1);
打开App,查看更多内容
随时随地看视频慕课网APP