MFC父窗口中调用子窗口EditControl问题 20
我的子窗口实际就是一个messagebox的功能,我用的EditControl控件,想在父窗口中SetWindowText不同的提示语到子窗口的Edit控件中,CDial...
我的子窗口实际就是一个messagebox的功能,我用的EditControl控件,想在父窗口中SetWindowText不同的提示语到子窗口的Edit控件中,
CDialogMessage Dlg;
Dlg.DoModal();
Dlg.GetDlgItem(IDC_EDIT8)->SetWindowText(_T("请输入有效命令后再进行转换操作!"));
程序走到最后一句就崩溃,我改用Dlg.SetDlgItemText(IDC_EDIT8, _T("请输入有效命令后再进行转换操作!"));也一样崩溃,由于第一次写MFC程序,不是很了解,希望MFC高手指点一下,如何才能实现我的需求? 展开
CDialogMessage Dlg;
Dlg.DoModal();
Dlg.GetDlgItem(IDC_EDIT8)->SetWindowText(_T("请输入有效命令后再进行转换操作!"));
程序走到最后一句就崩溃,我改用Dlg.SetDlgItemText(IDC_EDIT8, _T("请输入有效命令后再进行转换操作!"));也一样崩溃,由于第一次写MFC程序,不是很了解,希望MFC高手指点一下,如何才能实现我的需求? 展开
1个回答
展开全部
你该去建立非模态的 , 并且注意指针类型转换 GetDlgItem得到CWnd * 你需要把它转成CEdit *
模态的DoModal之后窗口就消失了,不存在了,窗口上的控件自然也不存在了
模态的DoModal之后窗口就消失了,不存在了,窗口上的控件自然也不存在了
追问
但是非模态对话框弹出后扔能对父窗口进行操作,我想要达到的效果是子窗口弹出后就不能对父窗口进行任何操作..还有其他办法实现我的需求吗?谢谢
追答
这个得玩线程 和查找窗口
UINT MyThreadProc(LPVOID pParam)
{
while(((CMfcdlg2014Dlg*)pParam)->threadrun)
{
HWND hwnd = FindWindow("#32770", "Dialog");
if(hwnd)
{
CWnd *p = CWnd::FromHandle(hwnd);
((CTestDlg *)p)->SetDlgItemText(IDC_EDIT1, "设置文本by线程");
}
Sleep(100);
}
return 0;
}
void CMfcdlg2014Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
threadrun= true;
AfxBeginThread( MyThreadProc, (LPVOID)this);
CTestDlg dlg;
dlg.DoModal();
threadrun = false;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询