Udostępnij za pośrednictwem


Formanty MFC ActiveX: używanie obrazów w formancie ActiveX

W tym artykule opisano typowe typ obrazu oraz jak wdrożyć go w formantów ActiveX.Tematy obejmują:

  • Omówienie właściwości obrazu niestandardowego

  • Wykonania właściwości obrazu niestandardowego formantu ActiveX

  • Dodatki do kontroli projektu

Omówienie właściwości obrazu niestandardowego

Typ obrazu jest jedną z grupy typów wspólne dla niektórych formantów ActiveX.Typ obrazu obsługuje metapliki, bitmapy lub ikony i pozwala użytkownikowi na określenie obraz do wyowietlania formantu ActiveX.Niestandardowe właściwości obrazu są implementowane przy użyciu obiektu obrazu i funkcje Get/Set, które umożliwiają sterowanie dostępem użytkowników do właściwości obrazu.Użytkownicy kontroli dostęp do właściwości niestandardowych obrazów przy użyciu akcji strona właściwości obrazu.

Oprócz standardowego typu obraz typy czcionek i kolorów są również dostępne.Aby uzyskać więcej informacji przy użyciu standardowej czcionki w formantów ActiveX, zobacz artykuł formantów ActiveX MFC: czcionki za pomocą.

Klasy formantu ActiveX dostarcza kilku składników, które można użyć do wdrożenia właściwości obrazu wewnątrz formantu.Te składniki zawierają:

  • CPictureHolder klasy.

    Ta klasa zapewnia łatwy dostęp do obiektu obrazu i funkcjonalność dla elementu wyświetlane przez niestandardowe właściwości obrazu.

  • Wsparcie dla właściwości typu LPPICTUREDISP, zaimplementowane funkcje Get/Set.

    Za pomocą widoku klasy można szybko dodać właściwości niestandardowej lub właściwości, który obsługuje typ obrazu.Aby uzyskać więcej informacji o dodawaniu właściwości formantu ActiveX z widoku klasy, zobacz artykuł formantów ActiveX MFC: właściwości.

  • Strona właściwości, który manipuluje obraz właściwość formantu lub właściwości.

    Ta strona właściwości jest częścią grupy stron pień właściwości dostępne dla formantów ActiveX.Aby uzyskać więcej informacji na stronach właściwości formantu ActiveX, zobacz artykuł formantów ActiveX MFC: za pomocą stron właściwości akcji

Wykonania właściwości obrazu niestandardowego formantu ActiveX

Po wykonaniu kroków opisanych w tej sekcji formantu może wyświetlać obrazy wybrane przez użytkownika.Użytkownik może zmienić obraz wyświetlany przy użyciu strony właściwości pokazuje bieżący obraz, który ma przycisk Przeglądaj, który pozwala użytkownikowi wybrać różne obrazy.

Właściwość niestandardowa obraz jest implementowane za pomocą procesu podobnej do tej stosowanej w życie innych właściwości, główną różnicą jest, że właściwości niestandardowej musi obsługiwać typ obrazu.Ponieważ element właściwości obrazu musi być napisana przez formant ActiveX, liczba uzupełnienia i modyfikacje należy do właściwości przed to może zostać w pełni zaimplementowana.

Aby zaimplementować niestandardowe właściwości obrazu, wykonaj następujące czynności:

  • Dodawanie kodu do projektu sterowania.

    Standardowy obraz właściwość identyfikator strony, element członkowski danych typu CPictureHolder, a właściwości niestandardowych typu LPPICTUREDISP z Get/Set wykonania musi zostać dodany.

  • Modyfikować kilka funkcji w klasie sterowania.

    Te zmiany zostaną wprowadzone kilka funkcji, które są odpowiedzialne za rysowanie formantu ActiveX.

Dodatki do kontroli projektu

Aby dodać identyfikator strony właściwości dla standardowej strony właściwości obrazu, należy wstawić poniższy wiersz po BEGIN_PROPPAGEIDS makro w pliku implementacji sterowania (.CPP):

PROPPAGEID(CLSID_CPicturePropPage)

Musi również przyrost wartości parametru liczba Twój BEGIN_PROPPAGEIDS makro o jeden.Następujący wiersz ilustruje to:

BEGIN_PROPPAGEIDS(CMyAxPicCtrl, 2)

Aby dodać CPictureHolder członka danych do klasy kontroli, Wstaw następujący wiersz w sekcji chronionych deklaracji klasy formantu w pliku nagłówka formantu (.H):

CPictureHolder    m_pic;

Nie jest konieczne do nazwy elementów członkowskich danych m_pic; wystarczy dowolną nazwę.

Następnie należy dodać właściwości niestandardowej, która obsługuje typ obrazu:

Aby dodać właściwość obrazu niestandardowego za pomocą Kreatora dodawania właściwości

  1. Załaduj projekt z kontroli.

  2. W widoku klasy rozwiń węzeł Biblioteka pilota.

  3. Kliknij prawym przyciskiem myszy węzeł interfejsu kontrolnej (drugiego węzła węzeł biblioteki), aby otworzyć menu skrótów.

  4. Z menu skrótów wybierz polecenie Dodaj a Dodaj właściwość.

  5. W Nazwa właściwości wpisz nazwę właściwości.Na przykład celów, ControlPicture używane w tej procedurze.

  6. W Typ właściwości wybierz opcję IPictureDisp * dla typu właściwości.

  7. Dla Typ implementacji, kliknij przycisk Metody Get i Set.

  8. Wpisz unikatowe nazwy dla Get i zestaw funkcji lub zaakceptować nazwy domyślne. (W tym przykładzie domyślne nazwy GetControlPicture i SetControlPicture są używane.)

  9. Kliknij Zakończ.

Kreator dodawania właściwości dodaje następujący kod między komentarzami mapę wysyłki w nagłówku kontroli (.H) plik:

IPictureDisp* GetControlPicture(void);
void SetControlPicture(IPictureDisp* pVal);

Ponadto następujący kod został wstawiony w planie wysyłki implementacji formantu (.Plik CPP):

DISP_PROPERTY_EX_ID(CMyAxPicCtrl, "ControlPicture", dispidControlPicture, 
   GetControlPicture, SetControlPicture, VT_PICTURE)

Kreator dodawania właściwości dodaje również następujące funkcje dwóch skrótowych w pliku implementacji:

IPictureDisp* CWizardGenCtrl::GetControlPicture(void)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   // TODO: Add your dispatch handler code here 

   return NULL;
}

void CWizardGenCtrl::SetControlPicture(IPictureDisp* /*pVal*/)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   // TODO: Add your property handler code here

   SetModifiedFlag();
}

[!UWAGA]

Nazwy klas i funkcja kontroli mogą różnić się od powyższego przykładu.

Zmiany w projekcie kontroli

Po dokonaniu dodatki niezbędne do kontroli projektu, należy zmodyfikować kilka funkcji, które wpływają na renderowanie formantów ActiveX.Funkcje te, OnResetState, OnDraw, a funkcje Get/Set właściwości niestandardowej obraz, znajdują się w pliku implementacji formantu. (Należy zauważyć, że w tym przykładzie klasy formantu jest nazywany CSampleCtrl, CPictureHolder nosi nazwę członka danych m_pic, a nazwa właściwości obrazu niestandardowego jest ControlPicture.)

W formancie OnResetState funkcji, należy dodać następujący wiersz opcjonalne po wywołaniu COleControl::OnResetState:

m_pic.CreateEmpty();

To ustawienie formantu obrazu pusty obraz.

Aby narysować obraz prawidłowo, należy wykonać połączenie telefoniczne do CPictureHolder::Render w formancie OnDraw funkcji.Modyfikowanie funkcja ma podobne do następującego przykładu:

void CMyAxPicCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& /*rcInvalid*/)
{
    if (!pdc)
        return;

   m_pic.Render(pdc, rcBounds, rcBounds);
}

W funkcji Get właściwości obrazu niestandardowego formantu Dodaj następujący wiersz:

return m_pic.GetPictureDispatch();

W funkcji zestaw właściwości formantu niestandardowego obrazu należy dodać następujące wiersze:

m_pic.SetPictureDispatch(pVal);
InvalidateControl();

Właściwość picture musi się trwałą tak, aby informacje dodane w czasie projektowania pojawią się w czasie wykonywania.Dodaj następujący wiersz do COleControl-pochodnych klasy DoPropExchange funkcji:

PX_Picture(pPX, _T("ControlPicture"), m_pic);

[!UWAGA]

Nazwy klas i funkcja mogą różnić się od powyższego przykładu.

Po zakończeniu modyfikacji należy ponownie skompiluj projekt do włączenia nowych funkcji niestandardowej właściwości obrazu i użyć Test kontenera, aby przetestować nową właściwość.Zobacz badania właściwości i zdarzenia z kontenerem Test informacji na temat sposobu dostępu do kontenera test.

Zobacz też

Koncepcje

Formanty MFC ActiveX

Formanty MFC ActiveX: używanie czcionek

Formanty MFC ActiveX: strony właściwości