Formanty MFC ActiveX: implementacja właściwości zaawansowanych
W tym artykule opisano tematy związane z implementacją zaawansowane właściwości formantu ActiveX:
Właściwości tylko do odczytu i tylko do zapisu
Zwracanie kodów błędów z właściwością
Właściwości tylko do odczytu i tylko do zapisu
Kreator dodawania właściwości zapewnia szybki i łatwy sposób wdrożyć właściwości tylko do odczytu lub tylko do zapisu dla formantu.
Aby implementować właściwość tylko do odczytu lub tylko do zapisu
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 wpisz nazwę swojej właściwości.
Dla Typ implementacji, kliknij przycisk Metody Get i Set.
W Typ właściwości wybierz odpowiedniego typu właściwości.
Jeśli chcesz, aby właściwość tylko do odczytu, wyczyść nazwą funkcji zestaw.Jeśli chcesz, aby właściwość tylko do zapisu, wyczyść nazwą funkcji Get.
Kliknij Zakończ.
Po wykonaniu tej czynności kreatora dodawania właściwości Wstawia funkcję SetNotSupported lub GetNotSupported we wpisie mapy wysyłki, zamiast zwykłej ustawiają lub pobierają funkcji.
Jeśli chcesz zmienić istniejącą właściwość tylko do odczytu lub tylko do zapisu, można ręcznie edytować mapę wysyłki i usunąć niepotrzebne funkcja Set lub Get z klasy formantu.
Jeśli właściwość, aby być warunkowo tylko do odczytu lub tylko do zapisu (na przykład tylko wtedy, gdy formant działa w okreolonym trybie), możesz zapewnia funkcja Set lub Get, jako normalne i zadzwoń do SetNotSupported lub GetNotSupported działać, gdzie stosowne.Na przykład:
void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (m_bReadOnlyMode) // some control-specific state
{
SetNotSupported();
}
else
{
m_iPropVal = newVal; // set property as normal
SetModifiedFlag();
}
}
Ten przykładowy kod wywołuje SetNotSupported Jeśli m_bReadOnlyMode element członkowski danych jest TRUE.Jeśli FALSE, a następnie właociwooć jest ustawiona na nową wartość.
Zwracanie kodów błędów z właściwością
Aby wskazać, że wystąpił błąd podczas próby uzyskania lub ustawić właściwość, należy użyć COleControl::ThrowError funkcja, która ma SCODE (kod stanu) jako parametr.Można użyć wstępnie zdefiniowanego SCODE lub zdefiniować własny.Aby uzyskać listę wstępnie zdefiniowanych SCODEs i instrukcje dotyczące definiowania niestandardowych SCODEs, zobacz Obsługa błędów w tym formancie ActiveX w formantach ActiveX artykułu: Tematy zaawansowane.
Funkcje pomocnika istnieją dla najbardziej popularnych wstępnie zdefiniowane SCODEs, takich jak COleControl::SetNotSupported, COleControl::GetNotSupported, i COleControl::SetNotPermitted.
[!UWAGA]
ThrowErrorjest przeznaczona do zastosowania tylko jako środek zwróceniem błędu od wewnątrz właściwość Get lub zestaw funkcji lub metoda automatyzacji.Są tylko, ile razy będzie obsługa wyjątków odpowiednie przedstawienie na stosie.
Aby uzyskać więcej informacji dotyczących raportowania wyjątków w innych obszarach kodu, zobacz COleControl::FireError oraz w sekcji Obsługa błędów w tym formancie ActiveX w artykule formantów ActiveX: Tematy zaawansowane.