Образец атрибутов ATLBUTTON: демонстрация кнопки с растровыми изображениями для различных состояний
Обновлен: Ноябрь 2007
Образец атрибутов ATLBUTTON создает кнопку, которая отображается с одним из трех растровых изображений в зависимости от ее состояния. Кнопка обладает растровыми изображениями для отжатого состояния, состояния наведения (когда курсор мыши перемещается над кнопкой) и нажатого состояния. В образец включены растровые изображения по умолчанию, но можно переопределить эти свойства. чтобы использовать собственные растровые изображения.
В образце также демонстрируется использование нескольких атрибутов IDL, атрибутов COM и атрибутов компилятора. Атрибут dispinterface используется для размещения интерфейса диспетчеризации _ATLButton в файле atlbutn.idl. Атрибут propputref разрешает использование ссылок вместо значений в функциях PictureStatic, PictureHover и PicturePush. В числе прочих широко распространенных атрибутов показан атрибут version.
Примечание о безопасности. |
---|
Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению. |
Чтобы получить образцы и инструкции по их установке, выполните следующие действия.
В меню Справка среды Visual Studio выберите пункт Примеры.
Дополнительные сведения см. в разделе Поиск файлов примеров.
Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.
Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.
Построение и запуск образца
Построение и запуск этого образца
Откройте файл решения atlbutn.sln.
В меню Построение выберите команду Построить решение.
Откройте тестовый контейнер элементов управления ActiveX и вставьте элемент управления (объект CAtlButton). Дополнительные сведения о доступе к тестовому контейнеру и его применении для тестирования элементов управления см. в разделеТестирование свойств и событий в тестовом контейнере.
Откройте диалоговое окно "Свойства" для элемента управления и сопоставьте рисунок с каждым из представленных свойств. Для этого перейдите в папку образца, выберите BMP-файл и нажмите кнопку Применить.
Заметьте, как изменяется изображение в элементе управления, когда на него наводится указатель мыши, а также в результате щелчка в элементе управления.
Атрибуты
В этом образце используются следующие атрибуты:
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++, однако по-прежнему демонстрируют выполнение требуемой задачи. |