我在把一个简单聊天功能的程序做成ActiveX控件
界面一切正常,但就是无法对我的socket类进行正常初始化,更别说连接了.
我是这样做的:
在控件里添加了一个CChatDlg类(主界面对话框)和一个CClientSocket类(基类为CAsyncSocket)
int CAtxChatCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
if(!m_ChatDlg.Create(IDD_DIALOG_CHAT,this))  //创建对话框
return -1;
return 0;
}
void CAtxChatCtrl::OnChatDlg() 
{
m_ChatDlg.DoModal();
m_ChatDlg.ShowWindow(SW_SHOW);               //激活显示对话框
}
然后把CChatDlg的一个私有成员m_sConnectSocket初始化,初始化函数如下:
BOOL CClientSocket::Initialize()
{
if(!Create(0,SOCK_STREAM, FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE))
{
AfxMessageBox("OK!");              //用于测试是否执行到此处
return FALSE;
}
return TRUE;
}我在ActiveX control test container里测试它时,弹出了“ok”这个MessageBox
说明已经执行到Initialize()了,但没能成功Create。
这是为什么呢?该如何解决?注:原来的project是基于对话框的,使用同样的方法,是能正常运行的
只是不知道为啥做成控件就game over  :(
m_sConnectSocket是CClientSocket类型。