Udostępnij za pośrednictwem


Krok 6: Dodawanie strony właściwości

Strony właściwości są implementowane jako oddzielne obiekty COM, które pozwalają im udostępnione, jeśli jest to wymagane.W tym kroku będzie wykonać następujące zadania, aby dodać do formantu strony właściwości:

  • Trwa tworzenie zasobu strony właściwości

  • Dodawanie kodu do tworzenia i zarządzania nimi na stronie właściwości

  • Dodawanie strony właściwości do formantu

Trwa tworzenie zasobu strony właściwości

Aby dodać stronę właściwości formantu, należy użyć Kreatora dodawania klasy ATL.

Aby dodać stronę właściwości

  1. W oknie Solution Explorer prawym przyciskiem myszy wielokąta.

  2. W menu skrótów kliknij polecenie Dodaj, a następnie kliknij przycisk Add Class.

  3. Z listy szablonów wybierz Stronę właściwości ATL i kliknij przycisk Dodaj.

  4. Gdy pojawi się Kreator stron właściwości ATL, wprowadź PolyProp jako krótki nazwy.

  5. Kliknij ciągów otworzyć ciągów strona, a następnie wprowadź & Wielokąt jako Tytuł.

    Tytuł właściwości strony jest ciągiem, który pojawia się na karcie tej strony.Ciąg Doc jest opis, który używa właściwości ramki w stan linii lub narzędzie porada.Należy zauważyć, że standardowe właściwości ramki obecnie nie używa tego ciągu można pozostawić ją z domyślnej zawartości.Nie wygeneruje plik pomocy w momencie, więc usunąć wpis w tym polu tekstowym.

  6. Kliknij Zakończ, i zostanie utworzony obiekt strony właściwości.

Tworzone są następujące trzy pliki:

Plik

Opis

PolyProp.h

Klasa C++ zawiera CPolyProp, który implementuje strony właściwości.

PolyProp.cpp

Zawiera plik PolyProp.h.

PolyProp.rgs

Skrypt rejestru, który rejestruje obiekt strony właściwości.

Tworzone są także następujące zmiany kodu:

  • Nowe strony właściwości jest dodawany do mapy zapisu obiektu w Polygon.cpp.

  • PolyProp Klasy jest dodawany do pliku Polygon.idl.

  • Nowy plik skryptu rejestru PolyProp.rgs dodaje się do zasobów projektu.

  • Szablon okno dialogowe zostanie dodany do zasobów projektu dla strony właściwości.

  • Okreolone ciągi właściwości są dodawane do tabeli ciągów zasobów.

Teraz Dodaj pola, które mają być wyświetlane na stronie właściwości.

Aby dodać pola do strony właściwości

  1. W oknie Solution Explorer kliknij dwukrotnie plik Polygon.rc zasobów.Spowoduje to otwarcie widoku zasobów.

  2. W widoku zasobów rozwiń węzeł okno dialogowe, a następnie kliknij dwukrotnie IDD_POLYPROP.Należy zauważyć, że pojawi się okno dialogowe jest pusty, z wyjątkiem etykiety, która informuje wstawianie formantów w tym miejscu.

  3. Wybierz tę etykietę i zmień ją odczytać boków: przez zmianę Podpis tekst w Właściwości okna.

  4. Rozmiaru pola Etykieta, tak aby jej rozmiar tekstu.

  5. Po prawej stronie etykiety, przeciągnij formant edycyjny z przybornika.

  6. Wreszcie, zmienić ID formantu edycji do IDC_SIDES za pomocą okna właściwości.

Na tym kończy proces tworzenia zasobu strony właściwości.

Dodawanie kodu do tworzenia i zarządzania nimi na stronie właściwości

Utworzono zasób strony właściwości, należy napisać kod implementacji.

Najpierw należy włączyć CPolyProp klasy, aby ustawić liczbę boków obiektu podczas Zastosuj Naciśnięto przycisk.

Aby zmodyfikować funkcji Zastosuj, aby ustawić liczbę boków

  • Zamień Apply funkcji w PolyProp.h z następującego kodu:

    STDMETHOD(Apply)(void)
    {
       USES_CONVERSION;
       ATLTRACE(_T("CPolyProp::Apply\n"));
       for (UINT i = 0; i < m_nObjects; i++)
       {
          CComQIPtr<IPolyCtl, &IID_IPolyCtl> pPoly(m_ppUnk[i]);
          short nSides = (short)GetDlgItemInt(IDC_SIDES);
          if FAILED(pPoly->put_Sides(nSides))
          {
             CComPtr<IErrorInfo> pError;
             CComBSTR strError;
             GetErrorInfo(0, &pError);
             pError->GetDescription(&strError);
             MessageBox(OLE2T(strError), _T("Error"), MB_ICONEXCLAMATION);
             return E_FAIL;
          }
       }
       m_bDirty = FALSE;
       return S_OK;
    }
    

Strona właściwości może mieć więcej niż jednego klienta dołączony jednocześnie, więc Apply funkcji pętli wokół i wywołuje put_Sides źródło na każdym kliencie z wartością pola edycji.Używasz CComQIPtr klasy, która wykonuje QueryInterface dla każdego obiektu do uzyskania IPolyCtl interfejsu z IUnknown interfejsu (przechowywane w m_ppUnk tablicy).

Kod sprawdza teraz ustawienie Sides właściwość faktycznie przepracowanych.Jeśli nie powiedzie się, kod wyświetla okno komunikatu Wyświetlanie szczegóły błędu z IErrorInfo interfejsu.Zazwyczaj kontenera zwraca obiekt ISupportErrorInfo interfejs i wywołania InterfaceSupportsErrorInfo pierwszy, aby ustalić, czy obiekt obsługuje ustawienie informacji o błędzie.Można pominąć to zadanie.

CComPtr pomaga poprzez obsługę automatycznie liczenia odniesienia, więc nie trzeba wywołać Release w interfejsie.CComBSTRpomaga z BSTR przetwarzania, więc nie trzeba wykonywać końcowym SysFreeString wywołania.Można także użyć jednego z różnych klas konwersji ciągu tak można przekonwertować BSTR w razie potrzeby (właśnie USES_CONVERSION makro jest na początku funkcji).

Trzeba także ustawić flagę dirty strony właściwości, aby wskazać, że Zastosuj powinien być włączony przycisk.To występuje, gdy użytkownik zmieni wartości w stronach polu edycji.

Do obsługi przycisku Zastosuj

  1. W widoku klasy, kliknij prawym przyciskiem myszy CPolyProp, a następnie kliknij przycisk Właściwości w menu skrótów.

  2. W oknie dialogowym właściwości kliknij zdarzenia ikonę.

  3. Rozwiń IDC_SIDES węzła listy zdarzeń.

  4. Wybierz EN_CHANGEi z menu rozwijanego po prawej stronie, kliknij <Add> OnEnChangeSides.OnEnChangeSides Deklaracji programu obsługi zostaną dodane do Polyprop.h i wykonania obsługi Polyprop.cpp.

Następnie można modyfikować obsługi.

Aby zmodyfikować metodę OnEnChangeSides

  • Dodaj następujący kod w Polyprop.cpp do OnEnChangeSides (kod umieszczać Kreatora usuwania) metody:

    LRESULT CPolyProp::OnEnChangeSides(WORD /*wNotifyCode*/, WORD /*wID*/, 
       HWND /*hWndCtl*/, BOOL& /*bHandled*/)
    {
       SetDirty(TRUE);
    
       return 0;
    }
    

OnEnChangeSidesbędzie wywoływana podczas WM_COMMAND wysyłana jest wiadomość z EN_CHANGE powiadomienia dla IDC_SIDES kontroli.OnEnChangeSidesnastępnie wywołuje SetDirty i przekazuje TRUE do wskazania właściwości strony jest teraz dirty i Zastosuj powinien być włączony przycisk.

Dodawanie strony właściwości do formantu

Kreator dodawania klasy ATL i ATL właściwości strony kreatora nie należy dodawać strony właściwości do formantu można automatycznie, ponieważ może istnieć wiele formantów w projekcie.Należy dodać wpis do mapowania właściwości formantu.

Aby dodać stronę właściwości

  • Otwórz PolyCtl.h i Dodaj wiersz do właściwości mapy:

    PROP_ENTRY_TYPE("Sides", 1, CLSID_PolyProp, VT_INT)
    

Mapa właściwości formantu teraz wygląda następująco:

BEGIN_PROP_MAP(CPolyCtl)
   PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
   PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
#ifndef _WIN32_WCE
   PROP_ENTRY_TYPE("FillColor", DISPID_FILLCOLOR, CLSID_StockColorPage, VT_UI4)
#endif
   PROP_ENTRY_TYPE("Sides", 1, CLSID_PolyProp, VT_INT)
   // Example entries
   // PROP_ENTRY("Property Description", dispid, clsid)
   // PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()

Można było dodać PROP_PAGE makro o identyfikatorze CLSID strony właściwości, ale jeśli używasz PROP_ENTRY makro, jak wykazano, Sides wartość właściwości jest także zapisywane podczas zapisywania kontroli.

Trzy parametry do makra są Opis Właściwość, DISPID właściwości i CLSID strony właściwości ma właściwość.Jest to przydatne, jeśli na przykład załadować formantu do języka Visual Basic i ustawić liczbę stron w czasie projektowania.Ponieważ numer strony jest zapisywany po ponownym ładowaniu projekt programu Visual Basic, zostaną przywrócone liczbę boków.

Tworzenie i testowanie formantu

Teraz utworzyć formant i włóż go do kontenera Test formantu ActiveX.W kontenerze badania na Edytuj menu, kliknij Obiektu klasy PolyCtl.Zostanie wyświetlona strona właściwości; Kliknij Wielokąt kartę.

Zastosuj przycisk początkowo jest wyłączony.Rozpocznij wpisywanie wartości w stronach pole i Zastosuj przycisk będzie stać się aktywny.Po zakończeniu wprowadzania wartości kliknij Zastosuj przycisku.Zmiany wyświetlania formantu oraz Zastosuj przycisk ponownie jest wyłączony.Spróbuj wprowadzić nieprawidłową wartość.Pojawi się okno komunikatu, zawierające opis błędu, ustawiona z put_Sides funkcji.

Następnie należy umieścić formantu na stronie sieci Web.

Wróć do kroku 5 | Do kroku 7

Zobacz też

Informacje

Samouczek ATL