Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Этот класс предоставляет методы для создания элементов управления ATL и управления ими.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
public WinBase;
Параметры
T
Класс, реализуя элемент управления.
WinBase
Базовый класс, реализующий функции окна. По умолчанию используется CWindowImpl.
Участники
Открытые конструкторы
| Имя | Описание |
|---|---|
| CComControl::CComControl | Конструктор. |
Открытые методы
| Имя | Описание |
|---|---|
| CComControl::ControlQueryInterface | Извлекает указатель на запрошенный интерфейс. |
| CComControl::CreateControlWindow | Создает окно для элемента управления. |
| CComControl::FireOnChanged | Уведомляет приемник контейнера об изменении свойства элемента управления. |
| CComControl::FireOnRequestEdit | Уведомляет приемник контейнера о том, что свойство элемента управления будет изменено, и что объект запрашивает приемник, как продолжить. |
| CComControl::MessageBox | Вызовите этот метод для создания, отображения и работы окна сообщения. |
Замечания
CComControl — это набор полезных вспомогательных функций управления и основных элементов данных для элементов управления ATL. При создании стандартного элемента управления или элемента управления DHTML с помощью мастера управления ATL мастер автоматически наследует класс.CComControl
CComControl является производным большинством методов от CComControlBase.
Дополнительные сведения о создании элемента управления см. в руководстве по ATL. Дополнительные сведения о мастере проектов ATL см. в статье "Создание проекта ATL".
Демонстрация CComControl методов и элементов данных см. в примере CIRC .
Иерархия наследования
WinBase
CComControl
Требования
Заголовок: atlctl.h
CComControl::CComControl
Конструктор.
CComControl();
Замечания
Вызывает конструктор CComControlBase, передав элемент m_hWnd данных, унаследованный через CWindowImpl.
CComControl::ControlQueryInterface
Извлекает указатель на запрошенный интерфейс.
virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);
Параметры
iid
[in] Идентификатор GUID запрашиваемого интерфейса.
ppv
[out] Указатель на указатель интерфейса, определяемый iid или NULL, если интерфейс не найден.
Замечания
Обрабатывает только интерфейсы в таблице карты COM.
Пример
// Retrieve the control's IOleObject interface. Note interface
// is automatically released when pOleObject goes out of scope
CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);
CComControl::CreateControlWindow
По умолчанию создается окно для элемента управления путем вызова CWindowImpl::Create.
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
Параметры
hWndParent
[in] Обрабатывается в окне родительского или владельца. Необходимо указать допустимый дескриптор окна. Окно управления ограничивается областью родительского окна.
rcPos
[in] Начальный размер и положение создаваемого окна.
Замечания
Переопределите этот метод, если вы хотите сделать что-то другое, кроме создания одного окна, например для создания двух окон, один из которых становится панелью инструментов для элемента управления.
Пример
RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;
// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);
CComControl::FireOnChanged
Уведомляет приемник контейнера об изменении свойства элемента управления.
HRESULT FireOnChanged(DISPID dispID);
Параметры
dispID
[in] Идентификатор измененного свойства.
Возвращаемое значение
Одно из стандартных значений HRESULT.
Замечания
Если класс управления является производным от IPropertyNotifySink, этот метод вызывает CFirePropNotifyEvent::FireOnChanged , чтобы уведомить все подключенные IPropertyNotifySink интерфейсы о том, что указанное свойство элемента управления изменилось. Если класс элемента управления не является производным, IPropertyNotifySinkэтот метод возвращает S_OK.
Этот метод безопасно вызывать, даже если элемент управления не поддерживает точки подключения.
Пример
STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
// store newVal in CComBstr member
m_bstrMyText = newVal;
// note the DISPID for the MyText property is 3 in this example
FireOnChanged(3);
return S_OK;
}
CComControl::FireOnRequestEdit
Уведомляет приемник контейнера о том, что свойство элемента управления будет изменено, и что объект запрашивает приемник, как продолжить.
HRESULT FireOnRequestEdit(DISPID dispID);
Параметры
dispID
[in] Идентификатор свойства, которое необходимо изменить.
Возвращаемое значение
Одно из стандартных значений HRESULT.
Замечания
Если класс управления является производным от IPropertyNotifySink, этот метод вызывает CFirePropNotifyEvent::FireOnRequestEdit , чтобы уведомить все подключенные IPropertyNotifySink интерфейсы, которые указанный элемент управления будет изменен. Если класс элемента управления не является производным, IPropertyNotifySinkэтот метод возвращает S_OK.
Этот метод безопасно вызывать, даже если элемент управления не поддерживает точки подключения.
Пример
STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
// the DISPID for MyTitle in this example is 4
DISPID dispID = 4;
// make sure we can change the property
if (FireOnRequestEdit(dispID) == S_FALSE)
return S_FALSE;
// store newVal in CComBstr member
m_bstrMyTitle = newVal;
// signal that the property has been changed
FireOnChanged(dispID);
return S_OK;
}
CComControl::MessageBox
Вызовите этот метод для создания, отображения и работы окна сообщения.
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = _T(""),
UINT nType = MB_OK);
Параметры
lpszText
Текст, отображаемый в поле сообщения.
lpszCaption
Заголовок диалогового окна. Если значение NULL (по умолчанию), используется заголовок "Ошибка".
nType
Указывает содержимое и поведение диалогового окна. См. запись MessageBox в документации по пакету SDK для Windows для списка доступных полей сообщений. По умолчанию предоставляется простая кнопка "ОК ".
Возвращаемое значение
Возвращает целочисленное значение, указывающее одно из значений элементов меню, перечисленных в разделе MessageBox в документации по пакету SDK для Windows.
Замечания
MessageBox полезно как во время разработки, так и в качестве простого способа отображения сообщения об ошибке или предупреждении пользователю.
См. также
Класс CWindowImpl
Общие сведения о классе
Класс CComControlBase
Класс CComCompositeControl