一个尖端的ActiveX控件

        为了帮助网上订单配送人员从繁琐的库存检查工作中摆脱出来,我制作了一个嵌入网页的ActiveX控件。目标程序是一个内嵌网页的C/S程序,我用DOM的方法获得指定页面上的药品编码的数据,并不需要有任何下载到数据库再读取的操作。读到的药品编号和自己单位的编码匹配,然后再检查有无库存,如果没有就直接在网页的改行记录上标注鲜艳的颜色并且勾中复选按钮。这部分的代码是C++写的:

......

IHTMLElement* pElem;
pDisp->QueryInterface(IID_IHTMLElement,(LPVOID*)&pElem);

IHTMLOptionButtonElement * pStatus;
hr=pDisp->QueryInterface(IID_IHTMLOptionButtonElement,(void **)&pStatus);
//上面4行是找到枚举出的页面上的复选按钮的其中一个和它对应的元素指针

if(SUCCEEDED(hr))
{
    BSTR bstr;
    CString strTag;

    pStatus->get_type(&bstr);
    strTag=bstr;
    if(strTag.MakeUpper()=="CHECKBOX") 
    {
          pStatus->get_value(&bstr);
          strTag=bstr;

          if(strTag==OrderID)
          {

               //如果这个复选框的文本和订单号相同,则选中
                VARIANT_BOOL bCheck=TRUE;
                pStatus->put_checked(bCheck);

    

                IHTMLElement * pChoiceTD;
                IHTMLElement * pChoiceTR;

                //找到复选框对应的元素指针的父元素指针,即<TD></TD>

                pElem->get_parentElement(&pChoiceTD);

                //找到复选框对应的元素指针的祖父元素指针,即<TR></TR>
                pChoiceTD->get_parentElement(&pChoiceTR);

                IHTMLTableRow* pTableRow=NULL;

                //找到祖父指针对应的TableRow,赋颜色
                pChoiceTR->QueryInterface(IID_IHTMLTableRow,(LPVOID*)&pTableRow);

                CString   strBgColor(strCheckColor);  
                BSTR   bstrBgColor   strBgColor.AllocSysString();   
                VARIANT varBgColor;
                VariantInit(&varBgColor);
                varBgColor.vt    VT_BSTR;  
                varBgColor.bstrVal    bstrBgColor;  

                pTableRow->put_bgColor(varBgColor);
          }
    }
   pStatus->Release(); 

......

       代码编译成ZKTOOL.DLL(进程内的COM服务器),由VB写的具有操作界面的ActiveX控件引用,再放入ASP.NET页面中。这里要说的一点,当ZKTOOL.DLL有更新后,第二次打入CAB的安装包中(安装ActiveX控件会自动注册ZKTOOL.DLL),在网页安装的时候,最好让客户端删掉前一版本的ZKTOOL.DLL,它应该在C:/WINDOWS/SYSTEM32目录下。

 

关于网页中加载ActiveX,可以访问:ActiveX控件在Web应用中的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值