如何:在对话框资源中承载 ActiveX 控件

更新:2007 年 11 月

在使用 Visual Studio 为设备设计 ActiveX 控件时,必须添加一些额外的步骤。“资源编辑器”要求控件必须在台式计算机上注册,这样才能在设计时操纵它。此外,您不能在台式计算机上注册设备控件。以下步骤提供了另一种设计时体验。下列过程假定您已拥有 ActiveX 控件项目和宿主项目,并且要在对话框中承载 ActiveX 控件。

说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置

使用对话框编辑器添加 ActiveX 控件

  1. 在对话框编辑器中,打开宿主项目的对话框。

  2. 将一个自定义控件从“工具箱”中拖动到该对话框。

  3. 在对话框中调整自定义控件的位置和大小,以反映您希望 ActiveX 控件具有的显示样式。

  4. 右击该自定义控件,然后单击“属性”。

  5. 在“类”属性中,粘贴 ActiveX 控件的 GUID。请记住包括大括号“{…}”。

  6. 在“解决方案资源管理器”中,右击项目 Project Name.RC2 文件,然后单击“查看代码”。

  7. 在“在此处添加手动编辑的资源”部分,添加以下代码。自定义控件要求正确显示对话框 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
    
  8. 生成和运行宿主项目。请记住在目标设备上部署和注册 ActiveX 控件。

使用承载 ActiveX 控件的替代方法

  1. 通过在应用程序中的某个位置调用 AtlAxWinInit 来注册 AtlAxWin80 窗口类。

    ATL 应用程序在模块初始化代码中执行此操作。Win32 应用程序应在 WinMain 函数中调用该函数。对于 MFC 应用程序,请按照下列步骤操作:

    1. 右击“解决方案资源管理器”中的项目节点,指向“添加”,然后单击“类”。

    2. 单击“向 MFC 添加 ATL 支持”(在“智能设备”标题下)。

    3. AtlAxWinInit 调用添加到宿主应用程序类的 InitInstance 方法的顶部。

  2. 在对话框资源(如 ATL 对话框或复合控件,或 MFC 对话框)中:

    1. 从“工具箱”拖动一个自定义控件。

    2. 将窗口类属性设置为“AtlAxWin80”。

    3. 将标题设置为用大括号括起的 GUID,或设置为 progid。

  3. 对于 MFC,请将 atl.lib 作为附加链接输入添加。

  4. 对于 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
    

请参见

其他资源

使用 Visual C++ 进行设备编程