如何:在对话框资源中承载 ActiveX 控件
更新:2007 年 11 月
在使用 Visual Studio 为设备设计 ActiveX 控件时,必须添加一些额外的步骤。“资源编辑器”要求控件必须在台式计算机上注册,这样才能在设计时操纵它。此外,您不能在台式计算机上注册设备控件。以下步骤提供了另一种设计时体验。下列过程假定您已拥有 ActiveX 控件项目和宿主项目,并且要在对话框中承载 ActiveX 控件。
说明: |
---|
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置。 |
使用对话框编辑器添加 ActiveX 控件
在对话框编辑器中,打开宿主项目的对话框。
将一个自定义控件从“工具箱”中拖动到该对话框。
在对话框中调整自定义控件的位置和大小,以反映您希望 ActiveX 控件具有的显示样式。
右击该自定义控件,然后单击“属性”。
在“类”属性中,粘贴 ActiveX 控件的 GUID。请记住包括大括号“{…}”。
在“解决方案资源管理器”中,右击项目 Project Name.RC2 文件,然后单击“查看代码”。
在“在此处添加手动编辑的资源”部分,添加以下代码。自定义控件要求正确显示对话框 Init 部分。不使用实际对话框 Init 部分的内容。请记住用项目的名称替换 <项目名称>。
IDD_<project name>_DIALOG DLGINIT BEGIN IDC_CUSTOM1, 0x376, 22, 0 0x0000, 0x0000, 0x0800, 0x0000, 0x094d, 0x0000, 0x043d, 0x0000, 0x0013, 0xcdcd, 0xcdcd, 0
生成和运行宿主项目。请记住在目标设备上部署和注册 ActiveX 控件。
使用承载 ActiveX 控件的替代方法
通过在应用程序中的某个位置调用 AtlAxWinInit 来注册 AtlAxWin80 窗口类。
ATL 应用程序在模块初始化代码中执行此操作。Win32 应用程序应在 WinMain 函数中调用该函数。对于 MFC 应用程序,请按照下列步骤操作:
右击“解决方案资源管理器”中的项目节点,指向“添加”,然后单击“类”。
单击“向 MFC 添加 ATL 支持”(在“智能设备”标题下)。
将 AtlAxWinInit 调用添加到宿主应用程序类的 InitInstance 方法的顶部。
在对话框资源(如 ATL 对话框或复合控件,或 MFC 对话框)中:
从“工具箱”拖动一个自定义控件。
将窗口类属性设置为“AtlAxWin80”。
将标题设置为用大括号括起的 GUID,或设置为 progid。
对于 MFC,请将 atl.lib 作为附加链接输入添加。
对于 MFC,请将这些行添加到“部署”|“附加文件”选项。尽管动态链接库中已存在这些行,但对于 MFC 静态链接库而言,必须添加这些行。
msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0 atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0 msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0