我定义两个类,一个对话框类,一个SOCKET类,首先:对话框类调用SOCKET类成员,我用增加头文件的办法可以搞定。但是由于工作的需要,SOCKET类工作的情况要在对话框的控件中显示出来,用加头文件的办法是不行的,曾考虑用消息机智来实现,但我在SOCKET类中发的消息只能在STATIC,EDIT这种控件中显示出来,而象LISTBOX控件就不行,请高手指点,在此谢谢啦

解决方案 »

  1.   

    可以直接调用成员函数,不需要加头文件。socket类的h文件上加入对话框类的声明,而不是include对话框的h文件:class CMyDialog;class CMySocket
    {
    private:
        CMyDialog * m_pDlg;
    };然后在socket的cpp文件中include对话框的h文件,就可以随意调用对话框类的成员。
      

  2.   

    也可以再
    APP中定义一个CSocket *pSocket;
    在你的CSocket 初始的时候
    ((××App *)AfxGetApp())->pSocket=this;
    最后在对话框中调用((××App *)AfxGetApp())->pSocket->...;
    就可以了
      

  3.   

    在SOCKET类中发的消息也有它的好处,它可等待有空时再处理。
    ::PostMessage(AfxGetApp()->m_pMainWnd->m_hWnd,WM_COMMAND,ID_MYMSG,0);在对话框文件中对消息ID_MYMSG进行处理。在对话框文件中处理LISTBOX控件也是行的。