有些着急,请来看下
有一个主窗口DLG1,往里面插入一个窗口DLG2,现在想在DLG1的一个函数里面得到DLG2里面的一个EDIT空间指针适用下列语句
CEdit *Edit=(CEdit *)DLG2::GetDlgItem(IDC_EDIT1);
错误::“CWnd::GetDlgItem”: 非静态成员函数的非法调用
换一种
DLG2 dlg;
CEdit *Edit=(CEdit *)dlg.GetDlgItem(IDC_EDIT1);
在执行时出错,似乎是挺严重的错误
现在有点迷糊,请告诉我可以怎么做
[解决办法]
CDialog2 *dlg2;BOOL CTest1Dlg::OnInitDialog(){ CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here dlg2 = new CDialog2; dlg2->Create( IDD_DIALOG2, this ); dlg2->ShowWindow( SW_SHOW ); return TRUE; // return TRUE unless you set the focus to a control}void CTest1Dlg::OnButton1(){ CEdit *pEdit = ( CEdit * )( dlg2->GetDlgItem( IDC_EDIT1 ) ); char tt[ 100 ] = ""; pEdit->GetWindowText( tt, sizeof( tt ) ); AfxMessageBox( tt );}
[解决办法]
為什麼在void CTest1Dlg::OnButton1()這個函數裏面我定義CDialog2 dlg2,然後dlg2.GetDlgItem( IDC_EDIT1 )會不可以呢??
我的看法: 在onbutton中 定义 时,这个窗口对象只是个局部变量,所以如果你在此函数外边操作获得的edit内容
可能出错
我想在DLG1上面接收DLG2上面一个EDIT控件中的数据,但是用ShowWindow显示DLG2时候,DLG1程序仍在运行,也就是说程序不会暂停,用domodal函数,却有出错,即dlg2->domodal()会出错,有什么办法么。
我的看法:
这两种一个是模式对话框,一个是非模式,你去msdn看下两者的区别,可能有帮助