Класс CComCompositeControl
Этот класс предоставляет методы, необходимые для реализации составного элемента управления.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения 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
Требования
Header: 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
Основные сведения о составном элементе управления
Общие сведения о классе