Udostępnij za pośrednictwem


Klasa CComControl

Ta klasa udostępnia metody tworzenia kontrolek ATL i zarządzania nimi.

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 WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
    public WinBase;

Parametry

T
Klasa implementowania kontrolki.

WinBase
Klasa podstawowa, która implementuje funkcje obsługi okien. Wartość domyślna to CWindowImpl.

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CComControl::CComControl Konstruktor.

Metody publiczne

Nazwa/nazwisko opis
CComControl::ControlQueryInterface Pobiera wskaźnik do żądanego interfejsu.
CComControl::CreateControlWindow Tworzy okno dla kontrolki.
CComControl::FireOnChanged Powiadamia ujście kontenera o zmianie właściwości kontrolki.
CComControl::FireOnRequestEdit Powiadamia ujście kontenera, że właściwość kontrolki ma ulec zmianie i że obiekt ujście, jak kontynuować.
CComControl::MessageBox Wywołaj tę metodę, aby utworzyć, wyświetlić i obsługiwać pole komunikatu.

Uwagi

CComControl to zestaw przydatnych funkcji pomocnika sterowania i podstawowych elementów członkowskich danych dla kontrolek ATL. Podczas tworzenia standardowej kontrolki lub kontrolki DHTML przy użyciu Kreatora kontrolek ATL kreator automatycznie uzyska klasę z klasy CComControl. CComControl większość jej metod pochodzi z CComControlBase.

Aby uzyskać więcej informacji na temat tworzenia kontrolki, zobacz samouczek ATL. Aby uzyskać więcej informacji na temat Kreatora projektu ATL, zobacz artykuł Tworzenie projektu ATL.

Aby zapoznać się z pokazem CComControl metod i elementów członkowskich danych, zobacz przykład CIRC .

Hierarchia dziedziczenia

WinBase

CComControlBase

CComControl

Wymagania

Nagłówek: atlctl.h

CComControl::CComControl

Konstruktor.

CComControl();

Uwagi

Wywołuje konstruktor CComControlBase, przekazując element m_hWnd członkowski danych dziedziczony za pośrednictwem CWindowImpl.

CComControl::ControlQueryInterface

Pobiera wskaźnik do żądanego interfejsu.

virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);

Parametry

identyfikator iid
[in] Identyfikator GUID żądanego interfejsu.

ppv
[out] Wskaźnik do wskaźnika interfejsu zidentyfikowany przez identyfikator lub wartość NULL, jeśli interfejs nie zostanie znaleziony.

Uwagi

Obsługuje tylko interfejsy w tabeli mapy COM.

Przykład

// 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

Domyślnie tworzy okno dla kontrolki przez wywołanie metody CWindowImpl::Create.

virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);

Parametry

hWndParent
[in] Dojście do okna nadrzędnego lub właściciela. Należy podać prawidłowy uchwyt okna. Okno sterowania jest ograniczone do obszaru okna nadrzędnego.

rcPos
[in] Początkowy rozmiar i położenie okna do utworzenia.

Uwagi

Zastąpi tę metodę, jeśli chcesz zrobić coś innego niż utworzenie pojedynczego okna, na przykład w celu utworzenia dwóch okien, z których jeden staje się paskiem narzędzi kontrolki.

Przykład

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

Powiadamia ujście kontenera o zmianie właściwości kontrolki.

HRESULT FireOnChanged(DISPID dispID);

Parametry

dispID
[in] Identyfikator właściwości, która uległa zmianie.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Uwagi

Jeśli klasa sterowania pochodzi z klasy IPropertyNotifySink, ta metoda wywołuje metodę CFirePropNotifyEvent::FireOnChanged , aby powiadomić wszystkie połączone IPropertyNotifySink interfejsy, że określona właściwość kontrolki uległa zmianie. Jeśli klasa sterowania nie pochodzi z IPropertyNotifySinkklasy , ta metoda zwraca S_OK.

Ta metoda jest bezpieczna do wywołania, nawet jeśli kontrolka nie obsługuje punktów połączenia.

Przykład

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

Powiadamia ujście kontenera, że właściwość kontrolki ma ulec zmianie i że obiekt ujście, jak kontynuować.

HRESULT FireOnRequestEdit(DISPID dispID);

Parametry

dispID
[in] Identyfikator właściwości, która ma ulec zmianie.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Uwagi

Jeśli klasa sterowania pochodzi z klasy IPropertyNotifySink, ta metoda wywołuje metodę CFirePropNotifyEvent::FireOnRequestEdit , aby powiadomić wszystkie połączone IPropertyNotifySink interfejsy, że określona właściwość kontrolki ma się zmienić. Jeśli klasa sterowania nie pochodzi z IPropertyNotifySinkklasy , ta metoda zwraca S_OK.

Ta metoda jest bezpieczna do wywołania, nawet jeśli kontrolka nie obsługuje punktów połączenia.

Przykład

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

Wywołaj tę metodę, aby utworzyć, wyświetlić i obsługiwać pole komunikatu.

int MessageBox(
    LPCTSTR lpszText,
    LPCTSTR lpszCaption = _T(""),
    UINT nType = MB_OK);

Parametry

lpszText
Tekst, który ma być wyświetlany w polu wiadomości.

lpszCaption
Tytuł okna dialogowego. Jeśli wartość NULL (wartość domyślna), zostanie użyty tytuł "Błąd".

nType
Określa zawartość i zachowanie okna dialogowego. Zobacz wpis MessageBox w dokumentacji zestawu Windows SDK, aby zapoznać się z listą dostępnych pól komunikatów. Wartość domyślna udostępnia prosty przycisk OK .

Wartość zwracana

Zwraca wartość całkowitą określającą jedną z wartości elementów menu wymienionych w obszarze MessageBox w dokumentacji zestawu Windows SDK.

Uwagi

MessageBox jest przydatny zarówno podczas programowania, jak i jako łatwy sposób wyświetlania użytkownikowi komunikatu o błędzie lub ostrzeżeniu.

Zobacz też

Klasa CWindowImpl
Omówienie klasy
Klasa CComControlBase
Klasa CComCompositeControl