Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Этот класс предоставляет методы, необходимые для реализации составного элемента управления.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
template <class T>
class CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>
Параметры
T
Класс, производный от CComObjectRoot или CComObjectRootEx, а также от любых других интерфейсов, которые вы хотите поддерживать составной элемент управления.
Участники
Открытые конструкторы
| Имя | Описание |
|---|---|
| CComCompositeControl::CComCompositeControl | Конструктор. |
| CComCompositeControl::~CComCompositeControl | Деструктор |
Открытые методы
| Имя | Описание |
|---|---|
| CComCompositeControl::AdviseSinkMap | Вызовите этот метод, чтобы советовать или отменять все элементы управления, размещенные составным элементом управления. |
| CComCompositeControl::CalcExtent | Вызовите этот метод, чтобы вычислить размер в единицах HIMETRIC ресурса диалогового окна, используемого для размещения составного элемента управления. |
| CComCompositeControl::Create | Этот метод вызывается для создания окна управления для составного элемента управления. |
| CComCompositeControl::CreateControlWindow | Вызовите этот метод, чтобы создать окно управления и рекомендовать любой размещенный элемент управления. |
| CComCompositeControl::SetBackgroundColorFromAmbient | Вызовите этот метод, чтобы задать цвет фона составного элемента управления с помощью цвета фона контейнера. |
Открытые члены данных
| Имя | Описание |
|---|---|
| CComCompositeControl::m_hbrBackground | Фоновая кисть. |
| CComCompositeControl::m_hWndFocus | Дескриптор окна, который в настоящее время имеет фокус. |
Замечания
Классы, производные от класса CComCompositeControl , наследуют функциональные возможности составного элемента управления ActiveX. Элементы ActiveX, производные от CComCompositeControl них, размещаются в стандартном диалоговом окне. Эти типы элементов управления называются составными элементами управления, так как они могут размещать другие элементы управления (собственные элементы управления Windows и элементы ActiveX).
CComCompositeControl определяет ресурс диалогового окна для создания составного элемента управления путем поиска перечисленного элемента данных в дочернем классе. Идентификатор участника этого дочернего класса имеет идентификатор ресурса ресурса ресурса диалогового окна, который будет использоваться в качестве окна элемента управления. Ниже приведен пример элемента данных, производный от CComCompositeControl класса, который должен содержать, чтобы определить ресурс диалогового окна, который будет использоваться для окна элемента управления:
enum { IDD = IDD_MYCOMPOSITE };
Примечание.
Составные элементы управления всегда находятся в окне, хотя они могут содержать элементы управления без окон.
Элемент управления, реализованный производным классом CComCompositeControl, имеет встроенное поведение табуляции по умолчанию. Когда элемент управления получает фокус путем табуляции в содержащее приложение, последовательно нажимая клавишу TAB, фокус будет цикличен по всем элементам, содержащим элементы управления составного элемента управления, а затем из составного элемента управления и на следующий элемент в порядке табуляции контейнера. Порядок вкладок размещенных элементов управления определяется ресурсом диалогового окна и определяет порядок, в котором будет выполняться вкладка.
Примечание.
Для правильной CComCompositeControlработы акселераторов необходимо загрузить таблицу акселераторов при создании элемента управления, передать дескриптор и количество акселераторов обратно в IOleControlImpl::GetControlInfo и, наконец, уничтожить таблицу при освобождении элемента управления.
Пример
// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite
// control class as follows:
STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
// Load the accelerator table from the resource
pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(),
MAKEINTRESOURCE(IDR_ACCELTABLE));
if (pCI->hAccel == NULL)
return E_FAIL;
// Get the number of accelerators in the table
pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
// The following is optional if you want your control
// to process the return and/or escape keys
// pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
pCI->dwFlags = 0;
return S_OK;
}
Иерархия наследования
WinBase
CComCompositeControl
Требования
Заголовок: atlctl.h
CComCompositeControl::AdviseSinkMap
Вызовите этот метод, чтобы советовать или отменять все элементы управления, размещенные составным элементом управления.
HRESULT AdviseSinkMap(bool bAdvise);
Параметры
bAdvise
Значение True, если все элементы управления должны быть рекомендуемы; в противном случае значение false.
Возвращаемое значение
| значение | Описание |
|---|---|
S_OK |
Все элементы управления в карте приемника событий были подключены или отключены от источника событий успешно. |
E_FAIL |
Не все элементы управления в карте приемника событий могут быть подключены или отключены от источника событий успешно. |
E_POINTER |
Эта ошибка обычно указывает на проблему с записью в карте приемника событий элемента управления или проблемой с аргументом шаблона, используемым в базовом IDispEventImpl классе.IDispEventSimpleImpl |
CONNECT_E_ADVISELIMIT |
Точка подключения уже достигла предела подключений и больше не может принимать. |
CONNECT_E_CANNOTCONNECT |
Приемник не поддерживает интерфейс, необходимый для этой точки подключения. |
CONNECT_E_NOCONNECTION |
Значение файла cookie не представляет допустимое соединение. Эта ошибка обычно указывает на проблему с записью в карте приемника событий элемента управления или проблемой с аргументом шаблона, используемым в базовом IDispEventImpl классе.IDispEventSimpleImpl |
Замечания
Базовая реализация этого метода выполняет поиск по записям в карте приемника событий. Затем он советует или отменяет точки подключения к COM-объектам, описанным в записях приемника событий карты событий. Этот метод-член также зависит от того, что производный класс наследует от одного экземпляра каждого элемента управления на карте приемника IDispEventImpl , который должен быть рекомендуем или неуправляем.
CComCompositeControl::CalcExtent
Вызовите этот метод, чтобы вычислить размер в единицах HIMETRIC ресурса диалогового окна, используемого для размещения составного элемента управления.
BOOL CalcExtent(SIZE& size);
Параметры
size
Ссылка на структуру SIZE для заполнения этим методом.
Возвращаемое значение
ЗНАЧЕНИЕ TRUE, если элемент управления размещается в диалоговом окне; в противном случае ЗНАЧЕНИЕ FALSE.
Замечания
Размер возвращается в параметре размера .
CComCompositeControl::Create
Этот метод вызывается для создания окна управления для составного элемента управления.
HWND Create(
HWND hWndParent,
RECT& /* rcPos */,
LPARAM dwInitParam = NULL);
Параметры
hWndParent
Дескриптор родительского окна элемента управления.
rcPos
Зарезервировано.
dwInitParam
Данные, передаваемые элементу управления во время создания элемента управления. Данные, передаваемые как dwInitParam, будут отображаться в качестве параметра LPARAM сообщения WM_INITDIALOG, который будет отправлен в составной элемент управления при его создании.
Возвращаемое значение
Дескриптор только что созданного составного элемента управления.
Замечания
Этот метод обычно вызывается во время активации элемента управления на месте.
CComCompositeControl::CComCompositeControl
Конструктор.
CComCompositeControl();
Замечания
Инициализирует элементы данных CComCompositeControl::m_hbrBackground и CComCompositeControl::m_hWndFocus элементами данных значение NULL.
CComCompositeControl::~CComCompositeControl
Деструктор
~CComCompositeControl();
Замечания
Удаляет фоновый объект, если он существует.
CComCompositeControl::CreateControlWindow
Вызовите этот метод, чтобы создать окно управления и сообщить всем размещенным элементам управления.
virtual HWND CreateControlWindow(
HWND hWndParent,
RECT& rcPos);
Параметры
hWndParent
Дескриптор родительского окна элемента управления.
rcPos
Прямоугольник позиции составного элемента управления в координатах клиента относительно hWndParent.
Возвращаемое значение
Возвращает дескриптор в только что созданном диалоговом окне составного элемента управления.
Замечания
Этот метод вызывает CComCompositeControl::Create и CComCompositeControl::AdviseSinkMap.
CComCompositeControl::m_hbrBackground
Фоновая кисть.
HBRUSH m_hbrBackground;
CComCompositeControl::m_hWndFocus
Дескриптор окна, который в настоящее время имеет фокус.
HWND m_hWndFocus;
CComCompositeControl::SetBackgroundColorFromAmbient
Вызовите этот метод, чтобы задать цвет фона составного элемента управления с помощью цвета фона контейнера.
HRESULT SetBackgroundColorFromAmbient();
Возвращаемое значение
Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.
См. также
Класс CComControl
Основные сведения о составном элементе управления
Общие сведения о классе