Udostępnij za pośrednictwem


Kontrolki ActiveX MFC: implementacja właściwości zaawansowanych

W tym artykule opisano tematy związane z implementowanie właściwości zaawansowanych w kontrolce ActiveX.

Ważne

ActiveX to starsza technologia, która nie powinna być używana do tworzenia nowych rozwiązań. Aby uzyskać więcej informacji na temat nowoczesnych technologii zastępujących activex, zobacz Kontrolki ActiveX.

Właściwości tylko do odczytu i tylko do zapisu

Kreator dodawania właściwości zapewnia szybką i łatwą metodę implementowania właściwości tylko do odczytu lub tylko do zapisu dla kontrolki.

Aby zaimplementować właściwość tylko do odczytu lub tylko do zapisu

  1. Załaduj projekt kontrolki.

  2. W widoku klasy rozwiń węzeł biblioteki kontrolki.

  3. Kliknij prawym przyciskiem myszy węzeł interfejsu kontrolki (drugi węzeł biblioteki), aby otworzyć menu skrótów.

  4. W menu skrótów kliknij pozycję Dodaj , a następnie kliknij pozycję Dodaj właściwość.

    Spowoduje to otwarcie Kreatora dodawania właściwości.

  5. W polu Nazwa właściwości wpisz nazwę właściwości.

  6. W polu Typ implementacji kliknij pozycję Pobierz/Ustaw metody.

  7. W polu Typ właściwości wybierz odpowiedni typ właściwości.

  8. Jeśli chcesz mieć właściwość tylko do odczytu, wyczyść pole Ustaw nazwę funkcji. Jeśli chcesz mieć właściwość tylko do zapisu, wyczyść pole Get function name (Pobierz nazwę funkcji).

  9. Kliknij przycisk Finish (Zakończ).

Gdy to zrobisz, Kreator dodawania właściwości wstawia funkcję SetNotSupported lub GetNotSupported we wpisie mapy wysyłania zamiast normalnej funkcji Set lub Get.

Jeśli chcesz zmienić istniejącą właściwość na tylko do odczytu lub tylko do zapisu, możesz ręcznie edytować mapę wysyłania i usunąć niepotrzebną funkcję Set lub Get z klasy sterującej.

Jeśli chcesz, aby właściwość mogła być warunkowo tylko do odczytu lub zapisu (na przykład tylko wtedy, gdy kontrolka działa w określonym trybie), możesz podać funkcję Set lub Get, tak jak zwykle, i wywołać SetNotSupported funkcję or GetNotSupported tam, gdzie jest to właściwe. 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 wywołania SetNotSupported , jeśli m_bReadOnlyMode element członkowski danych ma wartość TRUE. Jeśli wartość FALSE, właściwość 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 pobrania lub ustawienia właściwości, użyj COleControl::ThrowError funkcji , która przyjmuje kod SCODE (kod stanu) jako parametr. Możesz użyć wstępnie zdefiniowanego kodu SCODE lub zdefiniować własne. Aby uzyskać listę wstępnie zdefiniowanych wartości SCODEs i instrukcje dotyczące definiowania niestandardowych wartości SCODEs, zobacz Obsługa błędów w kontrolce ActiveX w artykule Kontrolki ActiveX: Tematy zaawansowane.

Funkcje pomocnika istnieją dla najbardziej typowych wstępnie zdefiniowanych wartości SCODEs, takich jak COleControl::SetNotSupported, COleControl::GetNotSupported i COleControl::SetNotPermitted.

Uwaga

ThrowError ma być używany tylko jako środek zwracania błędu z funkcji Get lub Set właściwości lub metody automatyzacji. Są to jedyne czasy, w których odpowiedni program obsługi wyjątków będzie obecny na stosie.

Aby uzyskać więcej informacji na temat raportowania wyjątków w innych obszarach kodu, zobacz COleControl::FireError i sekcję Obsługa błędów w kontrolce ActiveX w artykule Kontrolki ActiveX: Tematy zaawansowane.

Zobacz też

Kontrolki ActiveX MFC
Kontrolki ActiveX MFC: właściwości
Kontrolki ActiveX MFC: metody
Klasa COleControl