ATLFire 属性示例:演示如何生成有窗口的控件

更新:2007 年 11 月

ATLFire 属性示例是一个 ActiveX 控件,用于说明如何使用 ATL 通过将 m_bWindowedOnly 标志设置为 TRUE 来生成有窗口控件。它也显示了对 MFC 绘制代码需要如何处理以将其转换为直接的 Win32 代码。该示例使用对 Win32 对话框和属性表的 ATL 支持,并且还说明如何在 ActiveX 控件中使用 Win32 选项卡 (TabControl) 控件。该示例也说明若干 ATL 宏。

ATLFire 示例为此示例的非属性化版本。

安全说明:

提供该示例代码是为了阐释一个概念,并不代表着最安全的编码实践,因此不应在应用程序或网站中使用该示例代码。对于超出本示例代码的预期用途以外的使用所造成的偶然或继发性损失,Microsoft 不承担任何责任。

获取示例和安装示例的说明:

  • 在 Visual Studio 的“帮助”菜单上,单击“示例”。

    有关更多信息,请参见定位示例文件

  • 示例的最新版本和完整列表可以从 Visual Studio 2008 Samples page(Visual Studio 2008 示例页面)联机获取。

  • 还可以在计算机的硬盘上查找示例。默认情况下,示例和自述文件将复制到 \Program Files\Visual Studio 9.0\Samples\ 下的文件夹中。对于 Visual Studio 速成版,所有示例都位于联机位置。

生成并运行示例

生成并运行此示例

  1. 打开解决方案文件 ATLFire.sln。

  2. 从“生成”菜单中单击“生成”。

  3. 示例生成后,在 Web 浏览器中打开 FireTabCtrl.htm,试验此示例所模拟的各种激发类型。

可以在 ActiveX 控件测试容器中测试 ATLFire 控件。有关访问测试容器和用它来测试控件的详细信息,请参见用测试容器测试属性和事件

属性

此示例使用下面的属性:

coclass、dual、emitidl、helpstring、id、in、module、object、out、pointer_default、progid、propget、propput、registration_script、retval、support_error_info、threading、uuid、version

类和关键字

此示例使用下面的 ATL 类:

CComObjectRootEx、CComCoClass、CComControl、IDispatchImpl、IProvideClassInfo2Impl、IPersistStreamInitImpl、IPersistStorageImpl、IPersistPropertyBagImpl、IPerPropertyBrowsingImpl、IQuickActivateImpl、IObjectSafetyImpl、IOleControlImpl、IOleObjectImpl、IOleInPlaceActiveObjectImpl、IViewObjectExImpl、IOleInPlaceObjectWindowlessImpl、IDataObjectImpl、ISupportErrorInfo、ISpecifyPropertyPagesImpl、IConnectionPointContainerImpl、IPropertyNotifySinkCP、CDialogImpl

此示例使用以下关键字:

_ASSERTE、_itot、_tcstol、ALT_MSG_MAP、Apply、ATLTRACE、BEGIN_COM_MAP、BEGIN_CONNECTION_POINT_MAP、BEGIN_MSG_MAP、BEGIN_OBJECT_MAP、BEGIN_PROPERTY_MAP、CComCoClass、CComModule::GetClassObject、CComModule::GetLockCount、CComModule::Init、CComModule::RegisterServer、CComModule::Term、CComModule::UnregisterServer、CComObjectRootEx、CDialogImpl、ClientToScreen、COM_INTERFACE_ENTRY、COM_INTERFACE_ENTRY_IMPL、COM_INTERFACE_ENTRY_IMPL_IID、COMMAND_HANDLER、COMMAND_ID_HANDLER、CONNECTION_POINT_ENTRY、CPropDlg::DoModal、CreateBitmap、CreatePalette、DECLARE_REGISTRY_RESOURCEID、DeleteDC、DeleteObject、DestroyMenu、DisableThreadLibraryCalls、EnableWindow、END_COM_MAP、END_CONNECTION_POINT_MAP、END_MSG_MAP、END_OBJECT_MAP、END_PROPERTY_MAP、EndDialog、FillRect、FireOnChanged、GetActiveWindow、GetClientRect、GetDlgItem、GetDlgItemText、GetModuleInstance、GetWindowRect、IConnectionPointContainerImpl、IDataObjectImpl、IDispatchImpl、InitFire、InlineIsEqualGUID、IObjectSafetyImpl、IOleControlImpl、IOleInPlaceActiveObjectImpl、IOleInPlaceObjectWindowlessImpl、IOleObjectImpl、IPersistPropertyBagImpl、IPersistStorageImpl、IPersistStreamInitImpl、IPropertyNotifySinkCP、IProvideClassInfo2Impl、IQuickActivateImpl、ISpecifyPropertyPagesImpl、ISupportErrorInfo、IViewObjectExImpl、memcpy、MESSAGE_HANDLER、MessageBox、NOTIFY_CODE_HANDLER、OBJECT_ENTRY、OnActivate、OnApply、OnCancel、OnCreate、OnDestroy、OnEraseBackground、OnInitDialog、OnOK、OnPaint、OnPaletteChanged、OnProperties、OnPropertyChanged、OnQueryNewPalette、OnRButtonDown、OnSelChanged、OnSelChanging、OnSize、OnTimer、PAINTSTRUCT、PeekMessage、PROP_ENTRY、RealizePalette、SelectObject、SendMessage、SetTimer、SetWindowPos、TrackPopupMenuEx、UnregisterClass

说明:

其中某些示例(如此示例)尚未经过修改以反映 Visual C++ 向导、库和编译器中所做的更改,但仍演示了如何完成所需的任务。

请参见

其他资源

ATL 属性示例