WEB开发网
开发学院软件开发VC 用SDK玩转ActiveX 阅读

用SDK玩转ActiveX

 2006-04-11 22:54:07 来源:WEB开发网   
核心提示: 现在你可以编译链接这段代码了,在编译链接完成之后,用SDK玩转ActiveX(3),你就可以在工程目录下的Debug或Release目录下(取决于你的工程设置)发现名为agentctl.tlh和agentctl.tli的两个文件,你可以用文本方式打开它们看看,以Agent控件为例,通常使用

现在你可以编译链接这段代码了。在编译链接完成之后,你就可以在工程目录下的Debug或Release目录下(取决于你的工程设置)发现名为agentctl.tlh和agentctl.tli的两个文件。你可以用文本方式打开它们看看,你会发现agentctl.tlh中是agentctl.dll类型库中各接口的C/C++支持以及各接口的智能指针定义;至于agentctl.tli之中,则是一些更有趣的东西,在这里我就不多介绍了。

使用ActiveX

骨架完成后,就可以使用Agent这个ActiveX控件了。不过在使用之前,你需要把你曾经用来显示对话框的代码写成类似下面这个样子:

g_hDlgMain = AtlAxCreateDialog( hInstance, MAKEINTRESOURCE( IDD_MAIN_DLG ), NULL, (DLGPROC)MainDlgProc, 0 );

对于这行代码我需要解释三点。第一,由于我们的对话框中含有ActiveX控件,所以不能使用普通的CreateDialog;第二,g_hDlgMain是一个全局变量,我需要在另一个类中使用它;第三,由于我们需要显示Agent助手而不显示对话框,所以在此使用了无模式对话框——这样就可以创建一个不可见的对话框了。

现在可以在对话框的回调函数中使用ActiveX控件了。以Agent控件为例,通常使用ActiveX是类似这个样子:

CAxWindow wndAgent = GetDlgItem( hDlg, IDC_AGENT );

IAgentCtlExPtr pAgent; // IAgentCtlExPtr的定义来自于agentctl.tlh

HRESULT hr = wndAgent.QueryControl( __uuidof( IAgentCtlEx ), ( LPVOID * )&pAgent );

然后,就可以利用pAgent指针对Agent控件进行操作了。你可以在对话框回调函数中的WM_INITDIALOG中加入下面的代码来测试效果:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:SDK ActiveX

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接