vc ocx 接口参数的修改

16 篇文章 0 订阅
6 篇文章 0 订阅

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

DISP_FUNCTION(CUnbankCtrl, "send", send, VT_I2, VTS_BSTR VTS_BSTR VTS_BSTR)


对于第一次编写ocx接口还是容易出很多错误的。(我就上次写过这次写还是碰到很多问题)

1:在odl文件中定义

1     dispinterface _DSyncLink
 2     {
 3         properties:
 4             // NOTE - ClassWizard will maintain property information here.
 5             //    Use extreme caution when editing this section.
 6             //{{AFX_ODL_PROP(CSyncLinkCtrl)
 7             //}}AFX_ODL_PROP
 8 
 9         methods:
10             // NOTE - ClassWizard will maintain method information here.
11             //    Use extreme caution when editing this section.
12             //{{AFX_ODL_METHOD(CSyncLinkCtrl)
13             [id(1)] short sendMsg(BSTR fileName,BSTR name,BSTR signStr); 
14             [id(2)] short testOcx(BSTR str);
15             //}}AFX_ODL_METHOD
16             
17 
18             [id(DISPID_ABOUTBOX)] void AboutBox();
19     };

 

2:在ctl.h 文件中定义
1     DECLARE_MESSAGE_MAP()
2 
3 // Dispatch maps
4     //{{AFX_DISPATCH(CSyncLinkCtrl)
5     afx_msg short sendMsg(LPCTSTR fileName,LPCTSTR name,LPCTSTR signStr);
6     afx_msg short testOcx(LPCTSTR str);
7     //}}AFX_DISPATCH
8     DECLARE_DISPATCH_MAP()

1 // Dispatch and event IDs
 2 public:
 3     enum {
 4         
 5     //{{AFX_DISP_ID(CSyncLinkCtrl)
 6     eventidResult = 1L,
 7     dispidSendMsg = 2L,
 8     dispidTestOcx = 3L,
 9     //}}AFX_DISP_ID
10     };
11 };

3:ctl.cpp文件中定义

BEGIN_DISPATCH_MAP(CSyncLinkCtrl, COleControl)
    
//{{AFX_DISPATCH_MAP(CSyncLinkCtrl)
    DISP_FUNCTION(CSyncLinkCtrl, "sendMsg", sendMsg, VT_I2, VTS_BSTR VTS_BSTR VTS_BSTR)
    DISP_FUNCTION(CSyncLinkCtrl, 
"testOcx", testOcx, VT_I2,VTS_BSTR)
    
//}}AFX_DISPATCH_MAP
    DISP_FUNCTION_ID(CSyncLinkCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()

short CSyncLinkCtrl::testOcx(LPCTSTR str) 
{
        
return 8;
        
}

4:声明安全ocx安全

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值