<OBJECT ID="ThirdPartyCtl" CLASSID="CLSID:00000000-CC0D-44C9-8CFC-D63077BD683C">
<PARAM NAME="xxx" VALUE="yyyy">
</OBJECT>
我在MFC对话框中 添加“ActiveX中的MFC类”
由于这个控件需要license id ,在html页面中,可以通过 <param> 结点设置
但我再VC中直接创建,我不知道如何设置 <param> 就会弹出各种提示,就是告诉你,你需要设置license id
bSuccess = m_ctrl.Create(_T("XXXControl"), WS_CHILD|WS_VISIBLE, rect, this, 333);
这句无论如何,都会弹出那个框
如果我在这之前调用:m_ctrl.put_licenseid("xxxx");
很显然,COM对象都没创建好,肯定崩溃。
虽然Create成功后,我再调用 put_licenseid 是没问题的,后续调用其他接口方法也正常了,但是开始时候的提示框没办法去掉啊,这是第三方控件啊
各位,有知道如何做的码?
13 个解决方案
#1
将控件拖到界面上,直接在控件属性里设置。
#2
除了此方式,没别的办法了吗?我想用动态创建的方式啊
#3
不是应该使用 CreateControl 来创建吗?
如果需要授权 Key,那么应该
bstrLicKey
Optional license key data. This data is needed only for creating controls that require a run-time license key. If the control supports licensing, you must provide a license key for the creation of the control to succeed. The default value is NULL.
如果需要授权 Key,那么应该
bstrLicKey
Optional license key data. This data is needed only for creating controls that require a run-time license key. If the control supports licensing, you must provide a license key for the creation of the control to succeed. The default value is NULL.
#4
我之前没用过有license的控件,不知道一般都用啥初始化授权key,不过现在这个是通过 param name 设置的
<PARAM NAME="licenseid" VALUE="xxx">
创建对象过程中就赋值了。。
而且我用了 CreateControl ,最后三个参数传递的是:NULL, FALSE, licKey (行吗?)
结果调用失败,返回FALSE,并且输出窗口显示:
CoCreateInstance of OLE control {xxx-xx-x} failed.
>>> Result code: 0x80040154
>>> Is the control is properly registered?
#5
现在发现个问题,在我VS里,该控件可以加到对话框中,不过看不了属性页,一看 VS 就崩溃
所以只能用动态创建的方式,难道没有方法吗?
所以只能用动态创建的方式,难道没有方法吗?
#6
看错了,你的不是 license,而是一个参数。
你试试使用 CoCreateInstance 来创建试试。
你试试使用 CoCreateInstance 来创建试试。
#7
CoCreateInstance自己创建控件接口;
设置接口属性;<-- 这个就是你要做的
让你的窗口去AttachControl这个接口,而不是CreateControl,否则你的控件木有机会执行自定义初始化
设置接口属性;<-- 这个就是你要做的
让你的窗口去AttachControl这个接口,而不是CreateControl,否则你的控件木有机会执行自定义初始化
#8
AttachControl ?这个哪个接口的方法?难道我要再做一个包装控件?“”我的窗口“”就是MFC对话框啊
这层内容看不懂啊,网上哪有例子/Hello world 教程?这实在太底层了,实在不懂啊
#9
在MSDN里面搜“COM Tutorial Samples”
#10
你这个是VC6时代的吧,看你再很久之前的某个帖子里提过,需要什么MSDN98吧 ,暂时没有唉。
不过貌似整出来了——
我先摆一个 STATIC 控件,添加控件变量 m_axContainer,
然后 CoCreateInstance 得到接口指针 pMyCtrl,然后
pMyCtrl->put_Copyright(licKey);
hr = AtlAxAttachControl(pMyCtrl, m_axContainer.GetSafeHwnd(), &pUnkContainer);
这样看起来就好使了,只是不知道 带回的指针 pUnkContainer 有什么用处。。
#12
时代不同了,男女还一样!
#13
某些人喜欢创建好控件后对容器接口做些啥,最后的pUnkContainer就是给你返回容器接口,如果你不用,可以不理。当然不是真的不理,这个接口指针还得Release掉
#1
将控件拖到界面上,直接在控件属性里设置。
#2
将控件拖到界面上,直接在控件属性里设置。
除了此方式,没别的办法了吗?我想用动态创建的方式啊
#3
不是应该使用 CreateControl 来创建吗?
如果需要授权 Key,那么应该
bstrLicKey
Optional license key data. This data is needed only for creating controls that require a run-time license key. If the control supports licensing, you must provide a license key for the creation of the control to succeed. The default value is NULL.
如果需要授权 Key,那么应该
bstrLicKey
Optional license key data. This data is needed only for creating controls that require a run-time license key. If the control supports licensing, you must provide a license key for the creation of the control to succeed. The default value is NULL.
#4
不是应该使用 CreateControl 来创建吗?
如果需要授权 Key,那么应该
bstrLicKey
Optional license key data. This data is needed only for creating controls that require a run-time license key. If the control supports licensing, you must provide a license key for the creation of the control to succeed. The default value is NULL.
我之前没用过有license的控件,不知道一般都用啥初始化授权key,不过现在这个是通过 param name 设置的
<PARAM NAME="licenseid" VALUE="xxx">
创建对象过程中就赋值了。。
而且我用了 CreateControl ,最后三个参数传递的是:NULL, FALSE, licKey (行吗?)
结果调用失败,返回FALSE,并且输出窗口显示:
CoCreateInstance of OLE control {xxx-xx-x} failed.
>>> Result code: 0x80040154
>>> Is the control is properly registered?
#5
现在发现个问题,在我VS里,该控件可以加到对话框中,不过看不了属性页,一看 VS 就崩溃
所以只能用动态创建的方式,难道没有方法吗?
所以只能用动态创建的方式,难道没有方法吗?
#6
看错了,你的不是 license,而是一个参数。
你试试使用 CoCreateInstance 来创建试试。
你试试使用 CoCreateInstance 来创建试试。
#7
CoCreateInstance自己创建控件接口;
设置接口属性;<-- 这个就是你要做的
让你的窗口去AttachControl这个接口,而不是CreateControl,否则你的控件木有机会执行自定义初始化
设置接口属性;<-- 这个就是你要做的
让你的窗口去AttachControl这个接口,而不是CreateControl,否则你的控件木有机会执行自定义初始化
#8
CoCreateInstance自己创建控件接口;
设置接口属性;<-- 这个就是你要做的
让你的窗口去AttachControl这个接口,而不是CreateControl,否则你的控件木有机会执行自定义初始化
AttachControl ?这个哪个接口的方法?难道我要再做一个包装控件?“”我的窗口“”就是MFC对话框啊
这层内容看不懂啊,网上哪有例子/Hello world 教程?这实在太底层了,实在不懂啊
#9
在MSDN里面搜“COM Tutorial Samples”
#10
在MSDN里面搜“COM Tutorial Samples”
你这个是VC6时代的吧,看你再很久之前的某个帖子里提过,需要什么MSDN98吧 ,暂时没有唉。
不过貌似整出来了——
我先摆一个 STATIC 控件,添加控件变量 m_axContainer,
然后 CoCreateInstance 得到接口指针 pMyCtrl,然后
pMyCtrl->put_Copyright(licKey);
hr = AtlAxAttachControl(pMyCtrl, m_axContainer.GetSafeHwnd(), &pUnkContainer);
这样看起来就好使了,只是不知道 带回的指针 pUnkContainer 有什么用处。。
#11
#12
时代不同了,男女还一样!
#13
在MSDN里面搜“COM Tutorial Samples”
你这个是VC6时代的吧,看你再很久之前的某个帖子里提过,需要什么MSDN98吧 ,暂时没有唉。
不过貌似整出来了——
我先摆一个 STATIC 控件,添加控件变量 m_axContainer,
然后 CoCreateInstance 得到接口指针 pMyCtrl,然后
pMyCtrl->put_Copyright(licKey);
hr = AtlAxAttachControl(pMyCtrl, m_axContainer.GetSafeHwnd(), &pUnkContainer);
这样看起来就好使了,只是不知道 带回的指针 pUnkContainer 有什么用处。。
某些人喜欢创建好控件后对容器接口做些啥,最后的pUnkContainer就是给你返回容器接口,如果你不用,可以不理。当然不是真的不理,这个接口指针还得Release掉