Formanty MFC ActiveX: dodawanie dodatkowej niestandardowej strony właściwości

Czasami kontrolka ActiveX będzie mieć więcej właściwości niż można rozsądnie zmieścić na jednej stronie właściwości. W takim przypadku można dodać strony właściwości do kontrolki ActiveX, aby wyświetlić te właściwości.

W tym artykule omówiono dodawanie nowych stron właściwości do kontrolki ActiveX, która ma już co najmniej jedną stronę właściwości. Aby uzyskać więcej informacji na temat dodawania stron właściwości standardowych (czcionka, obraz lub kolor), zobacz artykuł MFC ActiveX Controls: Using Stock Property Pages (Kontrolki ActiveX MFC: używanie stron właściwości standardowych).

Poniższe procedury korzystają z przykładowej struktury kontrolek ActiveX utworzonej przez Kreatora kontrolek ActiveX. W związku z tym nazwy klas i identyfikatory są unikatowe dla tego przykładu.

Aby uzyskać więcej informacji na temat używania stron właściwości w kontrolce ActiveX, zobacz następujące artykuły:

Aby wstawić nowy szablon strony właściwości do projektu

  1. Po otwarciu projektu sterującego otwórz widok zasobu w obszarze roboczym projektu.

  2. Kliknij prawym przyciskiem myszy pozycję Widok zasobów, aby otworzyć menu skrótów, a następnie kliknij polecenie Dodaj zasób.

  3. Rozwiń węzeł Okno dialogowe i wybierz pozycję IDD_OLE_PROPPAGE_SMALL.

  4. Kliknij pozycję Nowy , aby dodać zasób do projektu.

  5. Wybierz nowy szablon strony właściwości, aby odświeżyć okno Właściwości (w widoku zasobu).

  6. Wprowadź nową wartość właściwości ID . W tym przykładzie użyto IDD_PROPPAGE_NEWPAGE.

  7. Kliknij przycisk Zapisz na pasku narzędzi.

Aby skojarzyć nowy szablon z klasą

  1. Otwórz widok klasy.

  2. Kliknij prawym przyciskiem myszy w widoku klasy, aby otworzyć menu skrótów.

  3. W menu skrótów kliknij pozycję Dodaj, a następnie kliknij pozycję Dodaj klasę.

    Spowoduje to otwarcie okna dialogowego Dodawanie klasy .

  4. Kliknij dwukrotnie szablon Klasa MFC.

  5. W polu Nazwa klasy w Kreatorze klas MFC wpisz nazwę nowej klasy okna dialogowego. (W tym przykładzie CAddtlPropPage.

  6. Jeśli chcesz zmienić nazwy plików, kliknij przycisk Zmień. Wpisz nazwy dla plików implementacji i nagłówka lub zaakceptuj nazwy domyślne.

  7. W polu Klasa podstawowa wybierz pozycję COlePropertyPage.

  8. W oknie dialogowym Id (Identyfikator okna dialogowego) wybierz pozycję IDD_PROPPAGE_NEWPAGE.

  9. Kliknij przycisk Zakończ , aby utworzyć klasę.

Aby zezwolić użytkownikom kontrolki na dostęp do tej nowej strony właściwości, wprowadź następujące zmiany w sekcji makra strony właściwości kontrolki (znajdującej się w pliku implementacji kontrolki):

BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
   PROPPAGEID(CMyAxUIPropPage::guid)
   PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)

Należy pamiętać, że należy zwiększyć drugi parametr makra BEGIN_PROPPAGEIDS (liczba stron właściwości) z zakresu od 1 do 2.

Należy również zmodyfikować plik implementacji kontrolki (. Plik CPP do uwzględnienia nagłówka (. H) plik nowej klasy strony właściwości.

Następnym krokiem jest utworzenie dwóch nowych zasobów ciągów, które zapewnią nazwę typu i podpis dla nowej strony właściwości.

Aby dodać nowe zasoby ciągów do strony właściwości

  1. Po otwarciu projektu sterującego otwórz widok zasobów.

  2. Kliknij dwukrotnie folder String Table, a następnie kliknij dwukrotnie istniejący zasób tabeli ciągów, do którego chcesz dodać ciąg.

    Spowoduje to otwarcie tabeli ciągów w oknie.

  3. Wybierz pusty wiersz na końcu tabeli ciągów i wpisz tekst lub podpis ciągu: na przykład "Dodatkowa strona właściwości".

    Spowoduje to otwarcie strony Właściwości ciągu z polami Podpis i Identyfikator . Pole Podpis zawiera wpisany ciąg.

  4. W polu Identyfikator wybierz lub wpisz identyfikator ciągu. Naciśnij klawisz Enter po zakończeniu.

    W tym przykładzie użyto IDS_SAMPLE_ADDPAGE dla nazwy typu nowej strony właściwości.

  5. Powtórz kroki 3 i 4 przy użyciu IDS_SAMPLE_ADDPPG_CAPTION identyfikatora i strony właściwości dodatkowej dla podpis.

  6. W. Plik CPP nowej klasy strony właściwości (w tym przykładzie CAddtlPropPage) zmodyfikuj element CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry tak, aby IDS_SAMPLE_ADDPAGE został przekazany przez klasę AfxOleRegisterPropertyPageClass, jak w poniższym przykładzie:

    BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister)
    {
       if (bRegister)
          return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),
             m_clsid, IDS_SAMPLE_ADDPAGE);
       else
          return AfxOleUnregisterClass(m_clsid, NULL);
    }
    
  7. Zmodyfikuj konstruktor polecenia CAddtlPropPage , aby IDS_SAMPLE_ADDPPG_CAPTION został przekazany do konstruktora COlePropertyPage w następujący sposób:

    CAddtlPropPage::CAddtlPropPage() :
       COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION)
    {
    
    }
    

Po wprowadzeniu niezbędnych modyfikacji ponownie skompiluj projekt i użyj kontenera testowego, aby przetestować nową stronę właściwości. Aby uzyskać informacje na temat uzyskiwania dostępu do kontenera testowego, zobacz Testowanie właściwości i zdarzeń za pomocą kontenera testowego.

Zobacz też

Kontrolki ActiveX MFC