共用方式為


ATLBUTTON 屬性範例:示範具有不同狀態點陣圖的按鈕

更新:2007 年 11 月

ATLBUTTON 屬性 (Attribute) 範例會建立一個按鈕,該按鈕會根據其狀態,顯示三個點陣圖中的其中一個。該按鈕的每一個點陣圖分別表示未按下的狀態、暫留狀態 (當滑鼠移到按鈕上方時) 以及已按下的狀態。預設點陣圖包含在範例裡,但是您可以覆寫這些屬性 (Property) 來使用您自己的點陣圖。

這個範例也示範了幾個 IDL、COM 和編譯器屬性 (Attribute) 的用法。dispinterface 屬性是用來將分派介面 (Dispatch Interface) _ATLButton 置於 atlbutn.idl 檔。propputref 屬性是用來在 PictureStatic、PictureHover 和 PicturePush 函式中使用參考而不使用值。除了其他常用的屬性之外,也示範了 version 屬性。

安全性注意事項:

這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。

若要取得範例和指示以便進行安裝:

  • 按一下 Visual Studio [說明] 功能表上的 [範例]。

    如需詳細資訊,請參閱尋找範例檔案

  • 最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。

  • 您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。

建置和執行範例

若要建置和執行這個範例

  1. 開啟方案檔 atlbutn.sln。

  2. 在 [建置] 功能表中,按一下 [建置方案]。

  3. 開啟 ActiveX 控制項測試容器 (Control Test Container),然後插入控制項 (CAtlButton 物件)。如需存取測試容器和使用容器測試控制項的詳細資訊,請參閱使用測試容器測試屬性和事件

  4. 開啟控制項的 [屬性] 對話方塊,然後瀏覽到範例資料夾、選擇 BMP 檔案,並按一下 [套用],將影像與每個列出的屬性 (Property) 產生關聯。

  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 屬性範例