Formanty MFC ActiveX: dodawanie właściwości standardowych
Właściwości zapasów różnią się od właściwości niestandardowych, że są one już wykonywane przez klasę COleControl.COleControlzawiera funkcji wstępnie zdefiniowanych elementów członkowskich, które obsługują typowe właściwości dla formantu.Niektóre typowe właściwości obejmują Podpis formantu i kolory pierwszego planu i tła.Aby uzyskać informacje dotyczące innych właściwości zapasów, zobacz Magazynie właściwości obsługiwane przez Kreatora dodawania właściwości opisaną w tym artykule.Wpisy map wysyłki dla właściwości zapasów są zawsze poprzedzone DISP_STOCKPROP.
W tym artykule opisano sposób dodawania właściwości zapasów (w tym przypadku podpis) do formantu ActiveX za pomocą Kreatora dodawania właściwości i wyjaśnia wynikające z niego modyfikacje kodu.Tematy obejmują:
Za pomocą Kreatora dodawania właściwości, aby dodać właściwość zapasów
Dodawanie zmian Kreator właściwości dla właściwości zapasów
Właściwości akcji obsługiwane przez Kreatora dodawania właściwości
Właściwości zapasów i powiadomienia
Właściwości koloru
[!UWAGA]
Niestandardowe formanty Visual Basic zazwyczaj mają właściwości, takie jak górnej, lewej, szerokość, wysokość, Wyrównaj, Tag, nazwa, TabIndex, TabStop i nadrzędnej.Pojemniki formantu ActiveX, jednak są odpowiedzialne za wykonanie tych właściwości formantu i dlatego formantów ActiveX powinien obsługuje te właściwości.
Za pomocą dodać właściwość kreatora, aby dodać właściwość zapasów
Dodawanie właściwości zapasów wymaga mniejszej ilości kodu niż dodanie właściwości niestandardowych, ponieważ obsługa właściwość jest obsługiwane automatycznie przez COleControl.Poniższa procedura ilustruje dodanie zapasów właściwości Caption dla ram formantu ActiveX i można również dodać inne właściwości zapasów.Podstawić nazwę wybranej akcji właściwości podpisu.
Aby dodać właściwości Caption podstawowego za pomocą Kreatora dodawania właściwości
Załaduj projekt z kontroli.
W widoku klasy rozwiń węzeł Biblioteka pilota.
Kliknij prawym przyciskiem myszy węzeł interfejsu kontrolnej (drugiego węzła węzeł biblioteki), aby otworzyć menu skrótów.
W menu skrótów kliknij polecenie Dodaj i kliknij przycisk Dodaj właściwość.
Spowoduje to otwarcie Kreatora dodawania właściwości.
W Nazwa właściwości kliknij przycisk Podpis.
Kliknij Zakończ.
Dodawanie zmian kreatora właściwości dla właściwości zapasów
Ponieważ COleControl obsługuje właściwości zapasów, Kreator dodawania właściwości nie powoduje zmiany deklaracji klasy w jakikolwiek sposób; Dodaje właściwość mapę wysyłki.Kreator dodawania właściwości dodaje następujący wiersz do formantu, który znajduje się w wykonaniu mapy wysyłki (.Plik CPP):
DISP_STOCKPROP_CAPTION()
Dodaje się następujący wiersz, aby opis interfejsu użytkownika kontroli (.Plik IDL):
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
Ten wiersz przypisuje właociwooć Caption określonym identyfikatorem.Należy zauważyć, że właściwość jest które można powiązać i będzie zażądać uprawnienia z bazy danych przed modyfikacją wartości.
Dzięki temu Właściwość Caption dostępne dla użytkowników pilota.Aby użyć wartość właściwości zapasów, dostęp do zmiennej członkowskiej lub funkcji członka z COleControl klasa podstawowa.Aby uzyskać więcej informacji na temat tych zmiennych składowych i funkcji elementów członkowskich Zobacz następnej sekcji, w magazynie właściwości obsługiwane przez Kreatora dodawania właściwości.
Pień właściwości obsługiwane przez właściwość Kreator dodawania
COleControl Klasa udostępnia dziewięć właściwości zapasów.Można dodać właściwości, które mają za pomocą Kreatora dodawania właściwości.
Właściwość |
Wpis mapy wysyłki |
Jak uzyskać dostęp do wartości |
---|---|---|
Wygląd |
(DISP_STOCKPROP_APPEARANCE) |
Dostępny jako wartość m_sAppearance. |
BackColor |
(DISP_STOCKPROP_BACKCOLOR) |
Wartości dostępne poprzez wywołanie GetBackColor. |
BorderStyle |
(DISP_STOCKPROP_BORDERSTYLE) |
Dostępny jako wartość m_sBorderStyle. |
Podpis |
(DISP_STOCKPROP_CAPTION) |
Wartości dostępne poprzez wywołanie InternalGetText. |
Włączony |
(DISP_STOCKPROP_ENABLED) |
Dostępny jako wartość m_bEnabled. |
Czcionka |
(DISP_STOCKPROP_FONT) |
Zapoznaj się z artykułem formantów ActiveX MFC: czcionki za pomocą aby zobaczyć sposób użycia. |
ForeColor |
(DISP_STOCKPROP_FORECOLOR) |
Wartości dostępne poprzez wywołanie GetForeColor. |
hWnd |
(DISP_STOCKPROP_HWND) |
Dostępny jako wartość m_hWnd. |
Tekst |
(DISP_STOCKPROP_TEXT) |
Wartości dostępne poprzez wywołanie InternalGetText.Ta właściwość jest taka sama, jak Podpis, z wyjątkiem nazwy właściwości. |
ReadyState |
DISP_STOCKPROP_READYSTATE() |
Wartość dostępny jako m_lReadyState lubGetReadyState |
Właściwości zapasów i powiadomienia
Większość właściwości zapasów mają funkcje powiadomienie, które może zostać zastąpiona.Na przykład, gdy BackColor zmienić właściwość, OnBackColorChanged wywoływana jest funkcja (funkcję członka klasy kontroli).Domyślna implementacja (w COleControl) wywołania InvalidateControl.Zastąpić tę funkcję, jeśli chcesz podjąć dodatkowe działania w odpowiedzi na tę sytuację.
Właściwości koloru
Można użyć akcji ForeColor i BackColor właściwości lub własne właściwości kolor niestandardowy, malując formantu.Aby użyć właściwości koloru, call COleControl::TranslateColor funkcji składowej.Parametry tej funkcji są wartość właściwości kolor i dojście do palety opcjonalne.Wartość zwracana jest COLORREF wartości, który może zostać przekazany do interfejsu GDI funkcji, takich jak SetTextColor i CreateSolidBrush.
Wartości kolorów dla trzody ForeColor i BackColor właściwości są dostępne przez wywołanie albo GetForeColor lub GetBackColor funkcjonować, odpowiednio.
Poniższy przykład demonstruje użycie właściwości tych dwóch kolorów, malując formantu.Inicjuje on tymczasowego COLORREF zmiennej i CBrush obiektu z wywołaniami TranslateColor: jeden za pomocą ForeColor właściwość i innych za pomocą BackColor właściwość.Tymczasowego CBrush obiekt jest następnie używany do malowania formantu prostokąt, a kolor tekstu jest ustawiona za pomocą ForeColor właściwości.
CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);