可以使用oleview将一个control的idl完全导出,但要注意修改函数的定义。
修改debug项中,选择activex测试容器就可以进行动态调试了。在这个程序中加入控件,注意要调试的控件要处于选择状态,才能调用control中的invoke mothod方法,可以调用方法,并设置参数的值,注意设置之后set。
如何调试和使用 ActiveX 控件。
由于控件并不能单独运行,所以你必须利用另一个程序来装载控件并进行调试, VC 中提供了 ActiveX 容器供使用,在工程 / 设置菜单 (project /setting) 中选择 Debug 页 第一栏Executable for debug session, 右侧箭头并选择 ActiveX Container 。
然后开始调试,进入 Container 时 VC 会提示 Container 中是没有调试代码的错误,不用理会并继续。
进入 Container 后首先要装载你所需要调试的控件,选择菜单 Edit/Insert OLE Control... ,在弹出的对话框中选择你需要插入的控件。
如果 Container 成功创建了控件在屏幕中就会显示出控件,根据上节的内容我们可以看到控件中显示了一串字符,接下来我们需要测试一下控件所提供的方法是否能够正确运行。请 选择菜单 Edit/Invoke Methods... ,在弹出的对话框上选择你要使用的方法,但你选择了方法后,对话框上的参数输入区会显示输入参数的列表,你输入参数后按下 Invoke 按钮就可以执行。
在调试时你可以如同调试其他程序一样在代码中使用 TRACE 宏,也可以设置断点。
其实你在插入控件时会看见其他在系统中已经注册的控件,如果有兴趣可以自己试试加载几个看看效果。
如果要在 VC 的工程中使用已经存在的 ActiveX 控件,最简单的方法就是利用 VC 的插入功能,在菜单中选择 Project/Add To Project/Component and Control (在不同版本的 VC 中可能菜单位置不同),然后选择插入的控件, VC 会为你生成这个控件的定义文件,当然和你最开始编写的会完全不一样,但 是没有关系。你会在定义文件看见这个控件所实现的方法和属性,这些都可以让你通过函数的方式进行调用。(所以在使用控件时如果没有该控件的说明是很难使用 的)
还有一种方法就是在对话框中插入一个控件。如果该控件的定义文件没有生成 VC 也可以帮助你生成。
在对话框中的控件是不需要手工创建的,但是如果你希望在其他地方创建窗口就需要调用控件的创建函数,其实这个函数很简单,和 CWnd::Create 函数定义的区别不大。定义为:
class CATLSam : public CWnd
{
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL) 。
可以使用如下方式调用:
Create("window text",WS_CHILD|WS_VISIBLE|WS_BORDER,CRect(0,0,200,200),this,1001);
由于是
CWnd
的派生类所以
CWnd
的相关功能都可以使用。在程序中创建了控件窗口后就可以调用控件的各种方法(对属性的控制也是通过函数调用来实现的,在前面的教程中我们已经认识到这点)。
在控件创建后就可以使用控件的各种属性和方法,由于控件是你自己编写的所以调用起来应该不会有什么问题。