标准MFC WinSock ActiveX控件开发实例(II)高级篇
2009-05-11 20:06:17 来源:WEB开发网五、接下来,我们看看VC和VB如何调用该控件:
VC调用控件方式: 新建一对话框工程,然后在工程中添加该控件,设置如下图:
图一 创建新对话框工程,并加入控件
响应控件的断网和数据到达事件,设置如下图:
图片看不清楚?请点击这里查看原图(大图)。
图二 响应控件的两个事件
添加相应代码,看起来如下:
void CTestMFCWinSockDlg::OnRecvSockEventMfcwinsockctrl1()
{
// TODO: Add your control notification handler code here
SAFEARRAYBOUND Bound[1];//一维数组
Bound[0].lLbound=0;
Bound[0].cElements=100;//该一维数组最大接收100个元素
VARIANT *data;
data = new VARIANT;
VariantInit(data);
data->vt = VT_ARRAY|VT_I4;//指明为长整型数组
data->parray = SafeArrayCreate(VT_I4,1,Bound);//创建SAFEARRAY结构
long l = m_sock.GetData(data,
COleVariant((long)0),
COleVariant((long)100),
COleVariant((long)3));
if(l<=0)
{
;//在这里判断出错信息,并作相应处理,我就偷懒了.
}
char pData[100]={0};//这里以字符数组显示结果
long change = 0;
for(long n=0; n<l; n++)
{
SafeArrayGetElement(data->parray,&n,&change);
pData[n] = (char)change;
}
CString mess;
mess.Format("%s",pData);
AfxMessageBox(mess);
SafeArrayDestroy(data->parray);
delete data;
}
void CTestMFCWinSockDlg::OnCloseWinsockMfcwinsockctrl1()
{
// TODO: Add your control notification handler code here
m_sock.DisConnect();//调用断开连接接口
AfxMessageBox("服务器断开了该次连接,请检查!");
}
void CTestMFCWinSockDlg::OnConnect()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(!m_sock.Connect(COleVariant(m_ip),COleVariant(m_port)))
AfxMessageBox("与服务器建立连接失败,请确认服务器是否存在!");
}
更多精彩
赞助商链接