+ -
当前位置:首页 → 问答吧 → 获取当前窗口指针。

获取当前窗口指针。

时间:2011-12-20

来源:互联网

CCSocketcliDlg *dlg=(CCSocketcliDlg*) AfxGetApp()->GetMainWnd();

AfxMessageBox("dddd");
dlg->m_connect.EnableWindow(FALSE);
dlg->m_disconnect.EnableWindow(TRUE);

本来是一个单文档的应用程序,在上面新建了一个CSocketcliDlg 对话框,现在想对对话框中的控件进行操作。
上面的代码是在CSocketcliDlg 对话框的一个按键消息开启的线程Thread中的。运行到
dlg->m_connect.EnableWindow(FALSE);
dlg->m_disconnect.EnableWindow(TRUE);
这两行便出错了。
貌似dlg并没有获得对话框的指针,求解释

作者: Windeal   发布时间: 2011-12-20

没测试,凭感觉
GetMainWnd()返回的是CWnd指针,它与CCSocketcliDlg *应该是不同的类
直接赋给CCSocketcliDlg *应该是有问题的(我的观点,慎用强制转换)
另外,你的跟踪下,dlg的值

作者: keiy   发布时间: 2011-12-20

依我之见,AfxGetApp()->GetMainWnd()在对话框程序中没有问题,可能文档有点不同吧

作者: zhoujielunzhimi   发布时间: 2011-12-20