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
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 IPropertyNotifySink
klasy , 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 IPropertyNotifySink
klasy , 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