在我的 SDI 应用程序中,我需要获得这种行为。单击 FormView 上的按钮后,将打开一个 CDialog。当我按下 CDialog 上的 OK 按钮时,我调用了 FormView 的一个函数。我不想关闭 CDialog。我尝试用无模式对话框来做,但是当我从对话框中调用 formview 函数时,我无法访问 formview 的控件,就像它丢失了 hwnd 一样;错误是无法读取 m_hwnd 的内存,hwnd 是???。这是我的代码:打开无模式对话框:
CCampiDlg *m_pDialog = NULL;
HWND hCampi = NULL;
// Invoking the Dialog
m_pDialog = new CCampiDlg;
if (m_pDialog != NULL)
{
BOOL ret = m_pDialog->Create(m_pDialog->IDD, this);
if (!ret) //Create failed.
{
AfxMessageBox(_T("Error creating Dialog"));
}
m_pDialog->ShowWindow(SW_SHOW);
}
当我在对话框中按下确定按钮时,我会:
CEditorTxView pView;
box2 = (CEdit*)(GetDlgItem(IDC_CAMPI_BOX2));
box2->GetWindowTextW(campo);
pView.inserisciCampo(1, campo);
在 CEditorTxView (CFormView) 的 inserisciCampo 函数中,我必须使用我的控件 txtCtrl 进行操作,但它丢失了 hwnd。txtCtrl 的声明在 CEditorTxView.h
CTx1 txtCtrl;
并在 DoDataExchange 函数中对其进行初始化:
void CEditorTxView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TX1, txtCtrl);
}
有人可以帮助我吗?