对话框的句柄获取问题

cutrain2009 2009-07-22 10:33:48
我从CSocket只能派生类CMySocket
以下是重载的函数
void CMySocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
CSampleclientDlg *m_pDlg=(CSampleclientDlg *)AfxGetMainWnd(); //可以正常获得对话框句柄
m_pDlg->DealReceive();

CSocket::OnReceive(nErrorCode);
}

void CMySocket::OnClose(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
CSampleclientDlg *m_pDlg=(CSampleclientDlg *)AfxGetMainWnd(); //获得的对话框句柄是0;
m_pDlg->GetDlgItem(IDC_CONNECTSERVER)->EnableWindow(FALSE); //程序自动关闭
AfxMessageBox("连接中断");
CSocket::OnClose(nErrorCode);
}


我的程序主窗口是对话框为基础的,IDC_CONNECTSERVER是按钮ID

这个程序早时可以啊,不知怎么会出现这种情况
...全文
552 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
书虫 2009-07-23
  • 打赏
  • 举报
回复
对你变量命名很好奇。。。。
CSampleclientDlg *m_pDlg=(CSampleclientDlg *)AfxGetMainWnd(); //可以正常获得对话框句柄
m_pDlg->DealReceive();


你不能把dlg声明称成员函数么
cutrain2009 2009-07-23
  • 打赏
  • 举报
回复
不起作用
cutrain2009 2009-07-23
  • 打赏
  • 举报
回复
也可以像你说的那样处理
不过我是这样处理也可以啊,
要用到时候获取
Conry 2009-07-22
  • 打赏
  • 举报
回复
AfxGetMainWnd是线程相关的
用AfxGetApp()->m_pMainWnd试试
CSampleclientDlg *m_pDlg=(CSampleclientDlg *)(AfxGetApp()->m_pMainWnd);
cutrain2009 2009-07-22
  • 打赏
  • 举报
回复
我用built建立的运行就没问题
好奇怪

18,355

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧