WEB开发网
开发学院软件开发VC 标准MFC WinSock ActiveX控件开发实例 阅读

标准MFC WinSock ActiveX控件开发实例

 2009-05-04 20:06:26 来源:WEB开发网   
核心提示: 后面看到各种变量类型包括在一个联合体当中,也就是说指明vt后,标准MFC WinSock ActiveX控件开发实例(3),你只能使用对应的其中之一变量类型,看着这众多的各种不同类型变量集中在一起,创建方法如下图:图片看不清楚?请点击这里查看原图(大图),图四 创建事件重载控件消息处理函数

后面看到各种变量类型包括在一个联合体当中,也就是说指明vt后,你只能使用对应的其中之一变量类型。看着这众多的各种不同

类型变量集中在一起,确实让人吓了一跳,但细细看来,大多数变量跟我们平时的用法相似。值得一提的是SAFEARRAY __RPC_FAR *parray;

也许有很多人还没有接触过SAFEARRAY类型的变量,SAFEARRAY实际上也是一个结构,大家可以参考MSDN,我也将在后面介绍它的具体使用方法。

用同样的方法创建DisConnect()接口

创建两个事件,FireCloseWinsock()响应网络断开事件,FireRecvSockEvent()响应网络有数据到达的事件。创建方法如下图:

标准MFC WinSock ActiveX控件开发实例

图片看不清楚?请点击这里查看原图(大图)。

图四 创建事件

重载控件消息处理函数WindowProc(),在View->ClassWizard中打开类向导,在消息映射中找到WindowProc,如下图:

标准MFC WinSock ActiveX控件开发实例

图片看不清楚?请点击这里查看原图(大图)。

图五 重载WindowProc()

四、编写代码

编写VariantToLong()转换函数,该函数代码如下: //类型转换,将VARIANT类型转换成Long类型
long CMFCWinSockCtrl::VariantToLong(const VARIANT &var)
{

long r;

switch(var.vt)

{

case VT_UI2://USHORT


r = var.uiVal;


break;

case VT_UI4://ULONG


r = var.ulVal;


break;

case VT_INT://INT


r = var.intVal;


break;

case VT_UINT://UINT


r = var.uintVal;


break;

case VT_I4://LONG


r = var.lVal;


break;

case VT_UI1://BYTE


r = var.bVal;


break;

case VT_I2://SHORT


r = var.iVal;


break;

case VT_R4://FLOAT


r = (long)var.fltVal;


break;

case VT_R8://DOUBLE


r = (long)var.dblVal;


break;

default:


r = -1;//无法转换该值


break;

}

return r;
}

   
大家可以看到,该函数将最基本的若干中数据类型转换成了long类型,但VARIANT决不是个简单的谱,我将在后面继续揭开它的神秘面纱.

上一页  1 2 3 4 5  下一页

Tags:标准 MFC WinSock

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接