OCX中得到IE传递的参数(2002/5/30 三金 版权所有)

网页向ActiveX控件传递参数(C++ 的ocx) 网页向ActiveX控件传递参数(C++ 的ocx) 网页向ActiveX控件传递参数(C++ 的ocx) 网页向ActiveX控件传递参数(C++ 的ocx) 立即下载
OCX中得到IE传递的参数(2002/5/30 三金 版权所有)

    如果你的工程属于OCX工程,并且需要连接数据库服务器。那么,工程应该适
应不同的数据库连接参数,如数据服务器名、数据库名、用户名、密码等当它们发
生变化时,工程应不需修改。这就要求OCX工程能携带参数。怎么搞?往下看。

    在你看这篇文章之前,最好先看一下三金所写的另外一篇文章 “EXE工程和OCX
工程的转化“。否则,后果自负。别怕,only a joke!:),不过,三金还是劝你看
一下,本篇你就会明白得快一些。如果你的OCX工程主Form是普通Form,并且继承于
工程中的ActiveForm,then,let's go on!

    为了便于说明,假设工程中的ActiveForm的name为ActiveFormX,单元文件为
ActiveFormX.pas,工程主Form的name为frmMain,单元文件为MainForm.pas。总的说
来,就是在就是在TActiveFormX与TfrmMain之间加一个中间类,由此类完成参数的接
收。设此类为TActiveFormNewX,因为此类作为二者的中间类,就需要把TfrmMain的父
类由TActiveFormX改为该类。打开MainForm.pas,找到TfrmMain的声明:
TfrmMain=class(TActiveFormX)改为TfrmMain=class(TActiveFormNewX),并且,
TActiveFormNewX继承于TActiveFormX。TActiveFormNewX的声明和实现如下,你应该
把它拷到ActiveFormX.pas单元中TActiveFormX的后面。

  TActiveFormNewX = class(TActiveFormX,IPersistPropertyBag)
  public
    ServerName,DBName,UserName, UserPassword:String;
  protected
    function IPersistPropertyBag.InitNew=PersistPropertyBagInitNew;
    function IPersistPropertyBag.Load   =PersistPropertyBagLoad;
    function IPersistPropertyBag.Save   =PersistPropertyBagSave;
    function IPersistPropertyBag.GetClassID=PersistPropertyBagGetClassID;

    function PersistPropertyBagInitNew:HResult;stdcall;
    function PersistPropertyBagLoad(const pPropBag:IPropertyBag;Const pErrorLog:
    IErrorLog):HResult; stdcall;
    function PersistPropertyBagSave(const pPropBag:IPropertyBag;fClearDirty:BOOL;
    fSaveAllProperties:BOOL):HResult; stdcall;
    function PersistPropertyBagGetClassID(out classID:TCLSID):HResult; stdCall;
  end;

  function TActiveFormNewX.PersistPropertyBagInitNew:HResult;
  begin
    Result:=S_OK;
  end;

  function TActiveFormNewX.PersistPropertyBagLoad(const pPropBag:IPropertyBag;
  Const pErrorLog:IErrorLog):HResult;stdCall;
  var
  Str:OleVariant;
  begin
    if pPropBag.Read('ServerName', Str ,pErrorLog) = S_OK then
      ServerName :=Str;
    if pPropBag.Read('DBName', Str ,pErrorLog) = S_OK then
      DBName :=Str;
    if pPropBag.Read('UserName', Str ,pErrorLog) = S_OK then
      UserName :=Str;
    if pPropBag.Read('UserPassword', Str ,pErrorLog) = S_OK then
      UserPassword :=Str;
    Result:=S_OK;
  end;

  function TActiveFormNewX.PersistPropertyBagSave(const pPropBag:IPropertyBag;
  fClearDirty:BOOL;fSaveAllProperties:BOOL):HResult;
  begin
    Result:=S_OK;
  end;

  function TActiveFormNewX.PersistPropertyBagGetClassID(out classID:TCLSID):
  HResult; stdCall;
  begin
    Result:=S_OK;
  end;

     从代码不难看出,此类有四个public成员:ServerName,DBName,UserName,
UserPassword。参数就是传给了它们。既然是public成员,且TfrmMain是该类子
类,所以,就可以在TfrmMain中得到这四个值。注意,应该把代码写在TfrmMain
的OnShow中,而不是OnCreate。
    在IE中应这样书写:
  <OBJECT      
          classid="clsid:3E71BE48-9AE1-431D-BD68-B17AA355BF38"  
          codebase="ActiveFormProj1.ocx#version=1,0,0,0"  
          width=538
          height=350  
          align=center  
          hspace=0  
          vspace=0
  >
    <param name=ServerName value=sanjin>
    <param name=DBName value=tian>
    <param name=UserName value=user>
    <param name=UserPassword value=>
  </OBJECT>
    如果你想添加或减少参数,不用我多说了吧!ok,解决。

    有朋友要发表意见:“我的OCX工程主Form是TActiveForm,照你的办法,我
可以在让我的TActiveForm继承于此类,我在TActiveForm中按同样的办法接收不
就的了!“。那我告诉你,参数的确能得到,不过你如果重新打开以下你的工程,
按F11看一下,TActiveForm的说有属性的和普通Form没什么两样了,虽然程序不
出错,但除了什么事和我无关。你要问为什么?我现在头有些大,要休息了。
更多更好文章尽在三金主页-天铭心草堂 http://vip.6to23.com/tianmingxin
基于STM32和MPU6050的手势控制小车设计与实现 MPU6050传感器:用于检测手势变化,采集加速度和陀螺仪数据。STM32微控制器:处理MPU6050传感器的数据,根据手势变化控制小车的运动。电机驱动模块:接收来自STM32的控制信号,驱动小车的电机,实现小车的前进、后退、左转和右转。小车底盘:作为整个系统的机械部分,提供移动平台。MPU6050是一款集成了3轴加速度计和3轴陀螺仪的传感器,具有高精度、低功耗和小体积等特点。它通过I2C接口与微控制器通信,可以实时采集加速度和角速度数据,广泛应用于运动检测、姿态控制和手势识别等领域。 阅读详情

相关推荐

python机器人编程——用pytorch实现六轴机械臂的正向和逆向数值解算,及python算法解析

前面对六轴(或多轴)机械臂进行了一些研究,特别是利用几何进行简化,实现逆解,来完成比较简单的搬用任务。然而,如果需要比较精确的操作任务,可能需要更加复杂的机械臂解算。其中比较复杂的是数值解算,这种解算往往涉及到比较复杂的机器人运动等原理知识,比较难以上手。但是,python的生态挺全面,已经有很多牛人实现了数值解法,但是去看他们的代码,还是觉得费劲。此外,随着深度神经网络的兴起,很多是用建立深度学习神经网络,去利用机械臂输入输出的大数据,训练机械臂的控制模型,这个上手也比较慢。

JAMES费的空间 5796

使用ocx控件输出数组参数

参数类型为VARIANT*,为可变类型的数组,本例子输出的是字符串数组STDMETHODIMP CStarSoftMap::GetQueryResultToArray(LONG* nSum, VARIANT* vQuery){     AFX_MANAGE_STATE(AfxGetStaticModuleState());      *nSum=m_nQueryNum;

miranda的专栏 2768

RoboMaster电控入门:手把手教你用STM32CubeMX配置大疆C板CAN总线驱动GM6020电机

本文详细介绍了如何使用STM32CubeMX配置大疆C板CAN总线驱动GM6020电机,适用于RoboMaster电控入门。从硬件准备到CubeMX工程初始化,再到CAN过滤器配置和电机控制协议解析,手把手教你避开常见配置陷阱,实现精准控制。

weixin_42524762的博客 269

Winform 调用C++ OCX 传入参数和传出参数问题

Winform或者wpf调用OCX的时候,经常涉及到参数传入,和返回的问题 因为.net是托管类型的,所以像vb这样非托管,直接传入内存首地址,在.net是行不通的 下面举例 1.c++需要传出的话,声明参数应该是:short MyCtrl::MyFunction(VARIANT FAR* data) 用于传出,在C#里面生成的类型是 ref object data,既然有了ref这个...

weixin_30826095的博客 531

Windows 24H2升级后eNSP AR_40报错40?VirtualBox虚拟化修复指南

虚拟化技术通过Hypervisor在操作系统与硬件间建立抽象层,使虚拟机能够共享物理资源。其核心原理依赖CPU的VT-x/AMD-V指令集,而Windows 24H2对内核隔离与驱动签名的强化会直接占用或拦截这些虚拟化资源。在工程实践中,VirtualBox作为Type-2型Hypervisor,常因内存完整性开启或版本过旧导致虚拟网卡创建失败,进而引发设备启动中断。典型场景包括网络仿真实验、多系统测试环境搭建等。当eNSP的AR_40路由器依赖VirtualBox引擎时,24H2的安全策略变更便会触发错误

weixin_34375251的博客 218

LTspice元器件库导入与路径管理:符号、模型、子电路全解析

在电子电路仿真中,元器件库通常由符号、模型和子电路三层构成:符号定义引脚外观,模型描述电气行为,子电路封装多端子网络。理解三者职责边界,是解决 LTspice 元器件库导入报错的关键。许多导入失败并非软件问题,而是文件类型错配、路径引用不清或引脚顺序不一致。掌握 `.include` 指令、用户库搜索路径和自制符号绑定模型,可以提升第三方模型复用效率,降低跨项目迁移成本。该思路适用于运放、MOS 管、二极管等器件建模,尤其在 UA741 等经典运放导入场景中,需要先核对 `.subckt` 引脚顺序,再选择

weixin_29182481的博客 181

如何在JavaScript与ActiveX之间传递数据(一)

本文研究如何在JS等脚本语言与ActiveX控件之间通信,如何传递各种类型的参数,以及COM的IDispatch接口。使用类似的方法,可以推广到其他所有脚本型语言,如LUA,AutoCad等。 本文将研究以下几个方面: 1.         整形数组传参 2.         字符串参数,字符串返回值 3.         修改传入字符串内容 4.         数组参数 5

playStudy的专栏 9143

UnityWebGL异常捕获全攻略:从报错提示到完美解决的3种配置方案

本文详细解析了UnityWebGL项目中异常捕获的三种核心配置方案:禁用异常、仅捕获显式异常以及完全捕获异常(无堆栈跟踪)。通过对比不同方案在构建体积、运行性能及错误信息详细度上的差异,帮助开发者根据开发、测试与发布阶段的不同需求,选择并配置最优的异常处理策略,从而有效提升WebGL应用的调试效率和线上稳定性。

5f4d3s2a1q的博客 400

ActiveX控件属性:自定义属性的使用

在很多场合下会存在这样的需求,那就是使用方在实际使用控件之前就想控件已经做了相应的处理比如加载的控件版本不正确等,或者需要在加载时才确定能够使用的功能集;这个时候传统的配置文件已经无法满足这种类型的需求了,往往的做法是在初始化控件的时候即做了相应的初始化,然后对自身的功能做了限制或者给使用方反馈,所以常常看到的是html标签中出现这样的写法: <OBJECT id="UsbossViewer"

waxgourd0的专栏 1万+

单细胞数据互转实战:从Scanpy的h5ad到Seurat对象的四种高效方法

本文针对单细胞数据分析中Scanpy的h5ad格式与Seurat对象互转的常见难题,详细对比了SeuratDisk、anndataR、schard和sceasy四种高效转换方法。文章从实战出发,剖析了每种方法的原理、操作流程、优缺点及避坑指南,并提供了清晰的选型策略,帮助用户根据数据特点选择最佳方案,实现跨平台数据的无缝衔接。

weixin_29099217的博客 450

ue 蓝图 c++ websocket 事件回调

ue 蓝图 c++ websocket 事件回调

jacke121的专栏 167

Js调用ocx中的出参为BSTR* 的问题。

甲方给的工程文档要求 是一个ocx一个函数,其中有一个参数 是BSTR* 作为出参。写好OCX之后,在JS中没法使用指针来接收这个BSTR*类型的字符串。网上查了好久查不到。最后得到结论,JS是不能通过这种出参的方式得到结果的。只有通过BSTR返回值,或者添加OCX属性来get到结果。

lg546982075的博客 3094

WinCC实现定时存储数据至SQLServer

环境 Win10 WinCC V7.5 SQL Server 2016 运行结果 流程 WinCC变量 全局VB脚本 (我设置的是每2秒存一次,因此周期性触发器设置1秒)

skr? 3990

vc ocx 接口参数的修改

在com组件的制作过程中 对接口参数的调整是难以避免的,如果不知道就会有许多的问题 比较显示的修改有 ctl.h  ctl.cpp odl 文件 但容易忽略的是 ctl.cpp中的DISP_FUNCTION 宏也需要修改 DISP_FUNCTION(CUnbankCtrl, "send", send, VT_I2, VTS_BSTR VTS_BSTR) 这个表示 输出为short 输入

xiaoyaofriend的专栏 4647

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 由shape控件得到Rgn(2000/11/21 三金 版权所有
下一篇: 利用ASP的文件操作实现用户管理
sanjin
博客等级 码龄26年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值