订阅所有文章
文章搜索

高级搜索这是社么?这是顶尖最新推出的文章增强型搜索功能!
全网 本站
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> VC >> 文章正文

ActiveX控件的开发

作者:hurrican…  来源:CSDN  点击  更新:2006-12-19 7:08:22  编辑: 画王w  字体

ActiveX控件的开发

 

    这段时间因为工作的需要,开发了一个ActiveX控件,采用的开发工具是VC,希望可以给大家做类似的开发时提供参考。

 

一,ActiveX控件的功能:

1,主要是用来下载和保存指定的网页。

2,要能够嵌在网页中,供服务器页面的脚本调用。

3,提供下载保存到哪个文件夹的窗口,给用户自己选择保存位置的机会。

4,提供程序接口,使得用户可以保存单个文件。

5,提供程序接口,使得用户可以保存多个文件,文件名以数组的方式传递过来。

 

二,ActiveX控件的开发过程:

1,通过VC的MFC ActiveX  ControlWizard 向导开发这个控件,将项目命名为ActiveX3

2,在向导的Step2 of 2中为Invisible at runtime打钩,并去掉Has an “About” Box前面的钩,该控件在调用时则不显示。

3,打开ClassWizard,在Automation下添加方法:

(1) External Name: DownloadSingle

 Internal Name: DownloadSingle

 Return Type: BOOL

 Parameter List: strDownload  LPCTSTR

         

         该方法的作用:接受并处理参数为字符串类型的下载请求,同时为操作员提供指定下载目录的机会并接受其指定。  

 

(2)    External  Name: DownloadArray

Internal Name: DownloadArray

Return Type: BOOL

Parameter List: arrDownload  Variant

 

         该方法的作用:接受并处理参数字符串数组类型的下载请求,同时为操作员提供指定下载目录的机会并接受其指定。

 

4,通过手工添加方法:  

   void TryUrl(CString strAddress)

   被DownloadArray和DownloadSingle调用,用来实现具体下载功能。

 

三,关键代码

 1,   BOOL CActiveX3Ctrl::DownloadSingle(LPCTSTR strDownload)

{

       // TODO: Add your dispatch handler code here

      char buf[MAX_PATH];

       _getcwd(buf,MAX_PATH);

   location=”d:\\”;

   TryUrl(strDownload);

       MessageBox("下载完成!");

       return TRUE;

}

 

2, BOOL CActiveX3Ctrl::DownloadArray(const VARIANT FAR& arrDownload)

{

       // TODO: Add your dispatch handler code here

       char buf[MAX_PATH];

       _getcwd(buf,MAX_PATH);

       location=”d:\\”;

       const VARIANT *varArray;

       if(arrDownload.vt==(VT_VARIANT|VT_BYREF))

       {

          varArray=arrDownload.pvarVal;

       }

       else

       {

          varArray=&arrDownload;

    }

   if((varArray->vt)==(VT_ARRAY | VT_BYREF | VT_VARIANT))

        {

              VARIANT* strarray;

              SAFEARRAY* psa = *(varArray->pparray);

              SafeArrayAccessData(psa,(void**)&strarray);

              UINT uDim = SafeArrayGetDim(psa);

              if(uDim==1)

              {

                     long lLbound,lRbound;

                     SafeArrayGetLBound(psa,1,&lLbound);

                     SafeArrayGetUBound(psa,1,&lRbound);

                     for(long i=lLbound;i<=lRbound;i++)

                     {

       

[1] [2] [3] 下一页

  • 上一篇文章:

  • 下一篇文章:
  •      
    热门文章  
    推荐文章  
    相关文章    
     发表评论
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备05002835号