Formanty ActiveX MFC: Obrazy za pomocą formantu ActiveX
W tym artykule opisano typowe typ obrazu i sposobu jej wdrożenia w formancie ActiveX w.Tematy obejmują:
Omówienie niestandardowe właściwości obrazu
Wykonania właściwości obrazu niestandardowego formantu ActiveX
Dodatki do kontroli projektu
Omówienie niestandardowe właściwości obrazu
Typ obrazu jest jednym z grupy typów wspólne dla niektórych formantów ActiveX.Typ obrazu obsługuje metaplików, bitmapy lub ikony i umożliwia użytkownikowi określenie obraz do wyświetlenia w formancie ActiveX.Niestandardowe właściwości obrazu są implementowane przy użyciu obiektu obrazu i funkcje Get i 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 zasobu strona właściwości obrazu.
Oprócz standardowego typu obraz czcionkę i kolor są również dostępne typy.Aby uzyskać więcej informacji na temat używania standardowy typ czcionki w formancie ActiveX w, zobacz artykuł formantów ActiveX MFC: przy użyciu czcionki.
Klasy formantu ActiveX zapewniają kilka 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 obiekt obrazu i funkcje elementu wyświetlane przez niestandardowe właściwości obrazu.
Wsparcie dla właściwości typu LPPICTUREDISP, zaimplementowane funkcje Get i Set.
Przy użyciu 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 na temat dodawania właściwości formantu ActiveX z widoku klasy, zobacz artykuł formantów ActiveX MFC: właściwości.
Strona właściwości operujący obraz właściwości formantu lub właściwości.
Strona ta jest częścią grupy stron właściwości zapasów, które są 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 zasobów
Wykonania właściwości obrazu niestandardowego formantu ActiveX
Po wykonaniu kroków opisanych w tej sekcji formantu może wyświetlać obrazy, w wybranym przez jego użytkownika.Użytkownik może zmienić obraz wyświetlane przy użyciu strony właściwości, która wskazuje bieżący obraz i znajduje się przycisk Przeglądaj, który umożliwia użytkownikowi wybierz różnych obrazów.
Niestandardowe właściwości obrazu jest zaimplementowana przy użyciu procesu podobnego do wykonywania innych właściwości, różnica, że właściwości niestandardowych musi obsługiwać typ obrazu.Ponieważ formant ActiveX, należy narysować element właściwości obrazu, liczbę uzupełnień i zmian należy do właściwości przed go może zostać w pełni zaimplementowana.
Aby zaimplementować niestandardowych właściwości obrazu, wykonaj następujące czynności:
Dodawanie kodu do projektu sterowania.
Standardowy obraz właściwość identyfikator strony, członek danych typu CPictureHolderi właściwości niestandardowych typu LPPICTUREDISP z Get/Set wykonania musi być dodana.
Modyfikowanie kilku funkcji w klasie sterowania.
Te zmiany będą wprowadzone do kilku funkcji, które są odpowiedzialne za rysowanie formantu ActiveX.
Dodatki do kontroli projektu
Aby dodać identyfikator strony właściwości dla standardowych strony właściwości obrazu, wstaw poniższy wiersz po BEGIN_PROPPAGEIDS makro w pliku implementacji sterowania (.CPP):
PROPPAGEID(CLSID_CPicturePropPage)
Należy również zwiększyć parametr liczba your BEGIN_PROPPAGEIDS makro o jeden.Następujący wiersz ilustruje to:
BEGIN_PROPPAGEIDS(CMyAxPicCtrl, 2)
Aby dodać CPictureHolder danych członka klasy control Wstaw następujący wiersz chronionych sekcji deklaracji klasy kontroli w pliku nagłówka formantu (.H):
CPictureHolder m_pic;
Nie jest konieczne nazwa członka danych użytkownika m_pic; wystarczy dowolną nazwę.
Następnie dodaj właściwość niestandardową, która obsługuje typ obrazu:
Aby dodać właściwość niestandardowego obrazu za pomocą Kreatora dodawania właściwości
Załadować projekt programu kontroli.
W widoku klasy rozwiń węzeł Biblioteka formantu.
Kliknij prawym przyciskiem myszy węzeł interfejsu dla formantu (drugiego węzła węzeł biblioteki), aby otworzyć menu skrótów.
Z menu skrótów wybierz polecenie Dodaj a Dodaj właściwość.
W Nazwa właściwości wpisz nazwę właściwości.Na przykład celów, ControlPicture jest używana w tej procedurze.
W Typ właściwości wybierz pozycję IPictureDisp * dla typu właściwości.
Dla Implementacji typu, kliknij Metody Get i Set.
Wpisz unikatowe nazwy dla Get i Set funkcje lub zaakceptuj domyślne nazwy.(W tym przykładzie domyślne nazwy GetControlPicture i SetControlPicture są używane.)
Kliknij Zakończ.
Kreatora dodawania właściwości dodaje się następujący kod między komentarzami mapę wysyłki nagłówka formantu (.H) pliku:
IPictureDisp* GetControlPicture(void);
void SetControlPicture(IPictureDisp* pVal);
Ponadto następujący kod został wstawiony w mapie wysyłki realizacji kontroli (.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ótowej pliku wykonania kontroli:
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 funkcji kontroli mogą różnić się od powyższego przykładu.
Zmiany do projektu kontroli
Po dokonaniu dodatków niezbędnych do kontroli projektu, należy zmodyfikować kilka funkcji, które wpływają na renderowania formantu ActiveX.Te funkcje OnResetState, OnDraw, i funkcje Get i Set właściwości niestandardowych obrazów znajdują się w pliku wdrażania kontroli.(Należy zauważyć, że w tym przykładzie klasy formantu jest nazywany CSampleCtrl, CPictureHolder Członkowskich danych jest nazywany m_pic, i nazwa właściwości niestandardowej obraz jest ControlPicture.)
W formancie OnResetState działały, należy dodać następujący wiersz opcjonalne po wywołaniu COleControl::OnResetState:
m_pic.CreateEmpty();
To ustawi formantu obrazu na pusty obraz.
Aby narysować obraz prawidłowo, wywołania do CPictureHolder::Render w formancie OnDraw funkcji.Modyfikowanie funkcji, aby podobne do następujących:
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 należy dodać następujący wiersz:
return m_pic.GetPictureDispatch();
W funkcji zestawu właściwości obrazu niestandardowego formantu należy dodać następujące wiersze:
m_pic.SetPictureDispatch(pVal);
InvalidateControl();
Właściwości obrazu musi zapewnić trwałe informacji dodanych w czasie projektowania będzie widoczny w czasie wykonywania.Dodaj następujący wiersz do COleControl-klasy 's DoPropExchange funkcji:
PX_Picture(pPX, _T("ControlPicture"), m_pic);
[!UWAGA]
Nazwy klas i funkcji mogą różnić się od powyższego przykładu.
Po zakończeniu modyfikacji odbudować projektu w celu włączenia nowych funkcji niestandardowych właściwości obrazu i użyć badania kontenera, aby przetestować nową właściwość.Zobacz badania właściwości i zdarzenia z kontenerem Test informacji na temat dostępu kontener testu do.