ATLBUTTON 属性示例:演示不同状态具有不同位图的按钮

更新:2007 年 11 月

ATLBUTTON 属性示例创建一个根据自身的状态用三种不同位图之一显示自身的按钮。按钮具有未按下状态、悬停状态(当鼠标移动到按钮上时)和按下状态的位图。示例中包含了默认位图,但您可以重写这些属性以使用您自己的位图。

此示例还说明若干个 IDL 属性、COM 属性和编译器属性的使用。调度接口属性用于将调度接口 _ATLButton 放置在 atlbutn.idl 文件中。使用 propputref 属性以允许在 PictureStatic、PictureHover 和 PicturePush 函数中使用引用来替代值。在说明其他常用属性时,也说明了版本属性。

安全说明:

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

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

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

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

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

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

生成并运行示例

生成并运行此示例

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

  2. 从“生成”菜单中单击“生成解决方案”。

  3. 打开 ActiveX 控件测试容器并插入控件(CAtlButton 对象)。有关访问测试容器和用它来测试控件的详细信息,请参见用测试容器测试属性和事件

  4. 打开控件的“属性”对话框,然后将图像与每个列出的属性关联,方法是浏览到示例文件夹,选择 BMP 文件,然后单击“应用”。

  5. 请注意在指针悬停在该控件上或单击该控件时,该控件中显示的图像是如何更改的。

属性

此示例使用下面的属性:

coclass、default、dispinterface、dll、dual、event_source、helpstring、id、implements_category、in、module、name、object、out、pointer_default、progid、propget、propput、propputref、registration_script、retval、support_error_info、uuid、version、vi_progid

关键字

此示例使用以下关键字:

Apartment、ATLTRACE、AtlWaitWithMessageLoop、BEGIN_COM_MAP、BEGIN_CONNECTION_POINT_MAP、BEGIN_MSG_MAP、BEGIN_OBJECT_MAP、BEGIN_PROPERTY_MAP、CComCoClass、CComControl、CComControl::FireViewChange、CComControl::InPlaceActivate、CComModule::GetClassObject、CComModule::GetLockCount、CComModule::Init、CComModule::RegisterServer、CComModule::Term、CComModule::UnregisterServer、CComObjectRoot、CloseHandle、CoGetInterfaceAndReleaseStream、CoInitialize、COleControl::OnClick、COM_INTERFACE_ENTRY、COM_INTERFACE_ENTRY_IMPL_IID、CoMarshalInterThreadInterfaceInStream、CONNECTION_POINT_ENTRY、CProxy_ATLButton、CreateDIBPalette、CreatePalette、CreateThread、CTimer、DECLARE_HANDLE、DECLARE_REGISTRY_RESOURCEID、DIBNumColors、DisableThreadLibraryCalls、DLL_PROCESS_DETACH、END_COM_MAP、END_CONNECTION_POINT_MAP、END_MSG_MAP、END_OBJECT_MAP、END_PROPERTY_MAP、GetCursorPos、GetFileSize、GetWindow、GlobalAlloc、GlobalFree、GlobalLock、GlobalSize、GlobalUnlock、IConnectionPointContainerImpl、IConnectionPointImpl、IDispatchImpl、IObjectSafetyImpl、IOleControlImpl、IOleInPlaceActiveObjectImpl、IOleInPlaceObjectWindowlessImpl、IOleInPlaceObjectWindowlessImpl::InPlaceDeactivate、IOleObjectImpl、IPersistPropertyBagImpl、IPersistStreamInitImpl、IProvideClassInfo2Impl、IViewObjectExImpl、LPLOGPALETTE、MESSAGE_HANDLER、OBJECT_ENTRY、PaintDIB、PaletteSize、PROP_ENTRY、PtInRect、PutImage、ReadDIBFile、ReadFile、RealizePalette、ScreenToClient、SelectPalette、SetDIBitsToDevice、SetStretchBltMode、Sleep、StretchDIBits、TimerOff、TimerOn、Unlock、USES_CONVERSION

说明:

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

请参见

其他资源

ATL 属性示例