请教:ActiveX控件如何初始化和使用CAsyncSocket类?

jokering 2004-11-04 04:28:09
我在把一个简单聊天功能的程序做成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 :(
...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jokering 2004-11-09
  • 打赏
  • 举报
回复
3X!
kingzai 2004-11-06
  • 打赏
  • 举报
回复
AfxSocketInit
etre 2004-11-05
  • 打赏
  • 举报
回复
//初始化Winsock2动态连接库
int ObtGlobalCom::TE_InitLibrary()
{
WSADATA WSD;
WORD wVersionRequired = MAKEWORD( 2,2 );

ZeroMemory(&WSD,sizeof(WSADATA));

int nErrorNo = WSAStartup(wVersionRequired, &WSD);

if(0 != nErrorNo )
{
return (SOCKET_ERROR);
}

if(LOBYTE( WSD.wVersion ) != 2 || HIBYTE( WSD.wVersion ) != 2 )
{
WSACleanup( );
return (SOCKET_ERROR);
}

//成功初始化
return 0;
}
uliser 2004-11-05
  • 打赏
  • 举报
回复
我也在犯难呢,做到com中同样出错,大家帮帮忙吧
jokering 2004-11-04
  • 打赏
  • 举报
回复
分数虽然少,但小弟诚心求教阿
大虾援援手阿~~~
jokering 2004-11-04
  • 打赏
  • 举报
回复
对了,m_sConnectSocket是CClientSocket类型。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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