我用VC生成一个对话框程序,叫GameClient工程,然后自定义一个类MySock类,
我现在要获取CGameClientDlg类的主窗口的句柄作为参数传递给MySock类,我使用全局变量可以,我不想使用全局变量,于是我在MySock类的一个成员函数中定义CGameClientDlg类的一个对象 gameObj,及成员变量m_MyhWnd,                  然后用m_MyhWnd=gameObj.m_hWnd ;获取的窗口句柄喂0,请问该如何传递此句柄?

解决方案 »

  1.   

    你MySock类的成员函数中定义CGameClientDlg类的对象并不是运行中的CGameClientDlg类的主窗口。它们是同一个类的不同实例,不能在类的范围内相互传递差数(除非你用static变量)。我觉得没必要在MySock类的一个成员函数中定义CGameClientDlg类的一个对象 gameObj,全局函数/变量挺高效的。
      

  2.   

    忙,你好,但是我在MySock类中定义一个CGameClientDlg的指针m_pDlg;
    然后在MySock类的成员函数中:
     m_pDlg = new CGameClientDlg;
     m_MyhWnd = m_pDlg->m_hWnd;或者m_MyhWnd = m_pDlg->GetSafeHwnd()也是0,因为我的工程比较大,全局变量太多,不好管理,所以不想用全局变量。还有没有其他更好的方法。
     希望大家多提意见!!!
      

  3.   

    你应该在CGameClientDlg中声明一个MySock对象,并将CGameClientDlg的this指针通过MySock的构造函数传过去就可以了
      

  4.   

    获得主对话框的句柄不用这么麻烦。
    CGameClientDlg *pDlg = (CGameClientDlg*)(AfxGetApp()->m_pMainWnd);
    pDlg->m_hWnd就是你想要的句柄了。
      

  5.   

    CGameClientDlg *pDlg = (CGameClientDlg*)(AfxGetMainWnd());
      

  6.   

    构造mysock的时候传进去CGameClientDlg类对象的this指针即可操作CGameClientDlg类的成员函数(不过只是共有的了)!over!