Klasa CComCompositeControl
Ta klasa udostępnia metody wymagane do zaimplementowania złożonej kontrolki.
Ważne
Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.
Składnia
template <class T>
class CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>
Parametry
T
Klasa, pochodząca z CComObjectRoot lub CComObjectRootEx, a także z innych interfejsów, które mają być obsługiwane dla kontrolki złożonej.
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CComCompositeControl::CComCompositeControl | Konstruktor. |
CComCompositeControl::~CComCompositeControl | Destruktora. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CComCompositeControl::AdviseSinkMap | Wywołaj tę metodę, aby doradzić lub nienadzorować wszystkich kontrolek hostowanych przez kontrolkę złożoną. |
CComCompositeControl::CalcExtent | Wywołaj tę metodę, aby obliczyć rozmiar w jednostkach HIMETRIC zasobu okna dialogowego używanego do hostowania złożonej kontrolki. |
CComCompositeControl::Create | Ta metoda jest wywoływana w celu utworzenia okna sterowania dla kontrolki złożonej. |
CComCompositeControl::CreateControlWindow | Wywołaj tę metodę, aby utworzyć okno sterowania i zalecić dowolną hostowaną kontrolkę. |
CComCompositeControl::SetBackgroundColorFromAmbient | Wywołaj tę metodę, aby ustawić kolor tła kontrolki złożonej przy użyciu koloru tła kontenera. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CComCompositeControl::m_hbrBackground | Szczotka tła. |
CComCompositeControl::m_hWndFocus | Uchwyt okna, który obecnie ma fokus. |
Uwagi
Klasy pochodzące z klasy CComCompositeControl
dziedziczą funkcjonalność kontrolki złożonej ActiveX. Kontrolki ActiveX pochodzące z CComCompositeControl
programu są hostowane przez standardowe okno dialogowe. Te typy kontrolek są nazywane kontrolkami złożonymi, ponieważ są w stanie hostować inne kontrolki (natywne kontrolki systemu Windows i kontrolki ActiveX).
CComCompositeControl
identyfikuje zasób okna dialogowego, który ma być używany w tworzeniu złożonej kontrolki, wyszukując wyliczony element członkowski danych w klasie podrzędnej. Identyfikator elementu członkowskiego tej klasy podrzędnej jest ustawiony na identyfikator zasobu okna dialogowego, który będzie używany jako okno kontrolki. Poniżej przedstawiono przykład składowej danych, z którego powinna znajdować się klasa pochodząca z CComCompositeControl
klasy w celu zidentyfikowania zasobu okna dialogowego, który ma być używany w oknie kontrolki:
enum { IDD = IDD_MYCOMPOSITE };
Uwaga
Kontrolki złożone są zawsze kontrolkami okien, chociaż mogą zawierać kontrolki bez okien.
Kontrolka zaimplementowana przez klasę pochodną CComCompositeControl
ma domyślne zachowanie tabulacji wbudowane. Gdy kontrolka odbiera fokus, będąc na karcie w aplikacji zawierającej, po kolei naciśnięcie TAB spowoduje, że fokus będzie przechodzić przez wszystkie zawarte kontrolki złożone, a następnie poza kontrolką złożoną i do następnego elementu w kolejności tabulatora kontenera. Kolejność tabulacji hostowanych kontrolek jest określana przez zasób okna dialogowego i określa kolejność występowania tabulacji.
Uwaga
Aby akceleratory działały prawidłowo z elementem CComCompositeControl
, należy załadować tabelę akceleratora podczas tworzenia kontrolki, przekazać uchwyt i liczbę akceleratorów z powrotem do elementu IOleControlImpl::GetControlInfo, a na koniec zniszczyć tabelę po zwolnieniu kontrolki.
Przykład
// 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;
}
Hierarchia dziedziczenia
WinBase
CComCompositeControl
Wymagania
Nagłówek: atlctl.h
CComCompositeControl::AdviseSinkMap
Wywołaj tę metodę, aby doradzić lub nienadzorować wszystkich kontrolek hostowanych przez kontrolkę złożoną.
HRESULT AdviseSinkMap(bool bAdvise);
Parametry
bAdvise
Prawda, jeśli wszystkie kontrole mają być zalecane; w przeciwnym razie wartość false.
Wartość zwracana
Wartość | Opis |
---|---|
S_OK |
Wszystkie kontrolki na mapie ujścia zdarzeń zostały pomyślnie połączone lub odłączone od źródła zdarzeń. |
E_FAIL |
Nie wszystkie kontrolki na mapie ujścia zdarzeń mogą zostać pomyślnie połączone lub odłączone od źródła zdarzeń. |
E_POINTER |
Ten błąd zwykle wskazuje problem z wpisem na mapie ujścia zdarzeń kontrolki lub problemem z argumentem szablonu używanym w klasie bazowej IDispEventImpl lub IDispEventSimpleImpl . |
CONNECT_E_ADVISELIMIT |
Punkt połączenia osiągnął już limit połączeń i nie może go już zaakceptować. |
CONNECT_E_CANNOTCONNECT |
Ujście nie obsługuje interfejsu wymaganego przez ten punkt połączenia. |
CONNECT_E_NOCONNECTION |
Wartość pliku cookie nie reprezentuje prawidłowego połączenia. Ten błąd zwykle wskazuje problem z wpisem na mapie ujścia zdarzeń kontrolki lub problemem z argumentem szablonu używanym w klasie bazowej IDispEventImpl lub IDispEventSimpleImpl . |
Uwagi
Podstawowa implementacja tej metody wyszukuje wpisy na mapie ujścia zdarzeń. Następnie zaleca lub nie nadzoruje punktów połączenia z obiektami COM opisanymi przez wpisy ujścia mapy ujścia zdarzeń. Ta metoda składowa opiera się również na tym, że klasa pochodna dziedziczy z jednego wystąpienia IDispEventImpl
dla każdej kontrolki na mapie ujścia, która ma być zalecana lub nienadzorowana.
CComCompositeControl::CalcExtent
Wywołaj tę metodę, aby obliczyć rozmiar w jednostkach HIMETRIC zasobu okna dialogowego używanego do hostowania złożonej kontrolki.
BOOL CalcExtent(SIZE& size);
Parametry
rozmiar
Odwołanie do SIZE
struktury, która ma zostać wypełniona przez tę metodę.
Wartość zwracana
WARTOŚĆ TRUE, jeśli kontrolka jest hostowana przez okno dialogowe; w przeciwnym razie FAŁSZ.
Uwagi
Rozmiar jest zwracany w parametrze size .
CComCompositeControl::Create
Ta metoda jest wywoływana w celu utworzenia okna sterowania dla kontrolki złożonej.
HWND Create(
HWND hWndParent,
RECT& /* rcPos */,
LPARAM dwInitParam = NULL);
Parametry
hWndParent
Uchwyt do okna nadrzędnego kontrolki.
rcPos
Zarezerwowany.
dwInitParam
Dane, które mają być przekazywane do kontrolki podczas tworzenia kontrolki. Dane przekazane jako dwInitParam będą wyświetlane jako parametr LPARAM komunikatu WM_INITDIALOG , który zostanie wysłany do kontrolki złożonej po jej utworzeniu.
Wartość zwracana
Dojście do nowo utworzonej kontrolki złożonej okno dialogowe.
Uwagi
Ta metoda jest zwykle wywoływana podczas aktywacji w miejscu kontrolki.
CComCompositeControl::CComCompositeControl
Konstruktor.
CComCompositeControl();
Uwagi
Inicjuje elementy członkowskie danych CComCompositeControl::m_hbrBackground i CComCompositeControl::m_hWndFocus do wartości NULL.
CComCompositeControl::~CComCompositeControl
Destruktora.
~CComCompositeControl();
Uwagi
Usuwa obiekt tła, jeśli istnieje.
CComCompositeControl::CreateControlWindow
Wywołaj tę metodę, aby utworzyć okno sterowania i poinformować wszystkie hostowane kontrolki.
virtual HWND CreateControlWindow(
HWND hWndParent,
RECT& rcPos);
Parametry
hWndParent
Uchwyt do okna nadrzędnego kontrolki.
rcPos
Prostokąt położenia kontrolki złożonej we współrzędnych klienta względem hWndParent.
Wartość zwracana
Zwraca uchwyt do nowo utworzonej kontrolki złożonej okno dialogowe.
Uwagi
Ta metoda wywołuje CComCompositeControl ::Create i CComCompositeControl::AdviseSinkMap.
CComCompositeControl::m_hbrBackground
Szczotka tła.
HBRUSH m_hbrBackground;
CComCompositeControl::m_hWndFocus
Uchwyt okna, który obecnie ma fokus.
HWND m_hWndFocus;
CComCompositeControl::SetBackgroundColorFromAmbient
Wywołaj tę metodę, aby ustawić kolor tła kontrolki złożonej przy użyciu koloru tła kontenera.
HRESULT SetBackgroundColorFromAmbient();
Wartość zwracana
Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.
Zobacz też
Klasa CComControl
Podstawy sterowania złożonego
Omówienie klasy