Kontenery: implementowanie kontenera
Ten artykuł zawiera podsumowanie procedury implementowania kontenera i wskazuje na inne artykuły, które zawierają bardziej szczegółowe wyjaśnienia dotyczące implementowania kontenerów. Zawiera również listę niektórych opcjonalnych funkcji OLE, które warto zaimplementować, oraz artykuły opisujące te funkcje.
Aby przygotować klasę pochodną CWinApp
Zainicjuj biblioteki OLE przez wywołanie
AfxOleInit
funkcji składowejInitInstance
.Wywołaj metodę
CDocTemplate::SetContainerInfo
,InitInstance
aby przypisać zasoby menu i akceleratora używane podczas aktywowania elementu osadzonego w miejscu. Aby uzyskać więcej informacji na temat tego tematu, zobacz Aktywacja.
Te funkcje są udostępniane automatycznie podczas tworzenia aplikacji kontenera za pomocą Kreatora aplikacji MFC. Zobacz Tworzenie programu MFC EXE.
Aby przygotować klasę widoku
Śledź wybrane elementy, utrzymując wskaźnik lub listę wskaźników, jeśli obsługujesz wiele zaznaczeń, do wybranych elementów. Funkcja
OnDraw
musi rysować wszystkie elementy OLE.Zastąpij,
IsSelected
aby sprawdzić, czy element przekazany do niego jest aktualnie zaznaczony.Zaimplementuj procedurę obsługi komunikatów
OnInsertObject
, aby wyświetlić okno dialogowe Wstawianie obiektu.Zaimplementuj procedurę obsługi komunikatów
OnSetFocus
, aby przenieść fokus z widoku do aktywnego elementu osadzonego OLE w miejscu.Zaimplementuj procedurę
OnSize
obsługi komunikatów, aby poinformować element osadzony OLE, że musi zmienić jego prostokąt, aby odzwierciedlić zmianę rozmiaru zawierającego go widoku.
Ponieważ implementacja tych funkcji różni się znacznie od jednej aplikacji do następnej, kreator aplikacji udostępnia tylko podstawową implementację. Prawdopodobnie trzeba będzie dostosować te funkcje, aby aplikacja działała prawidłowo. Aby zapoznać się z przykładem tego, zobacz przykład KONTENER .
Obsługa osadzonych i połączonych elementów
Utwórz klasę z klasy COleClientItem. Obiekty tej klasy reprezentują elementy, które zostały osadzone lub połączone z dokumentem OLE.
Zastąpij
OnChange
wartości ,OnChangeItemPosition
iOnGetItemPosition
. Te funkcje obsługują ustalanie rozmiaru, pozycjonowanie i modyfikowanie osadzonych i połączonych elementów.
Kreator aplikacji utworzy dla Ciebie klasę, ale prawdopodobnie będzie konieczne zastąpienie OnChange
i inne funkcje wymienione w kroku 2 w poprzedniej procedurze. Implementacje szkieletu muszą być dostosowane dla większości aplikacji, ponieważ te funkcje są implementowane inaczej niż jedna aplikacja do następnej. Aby zapoznać się z przykładami, zobacz przykłady MFC DRAWCLI i CONTAINER.
Aby obsługiwać ole, należy dodać kilka elementów do struktury menu aplikacji kontenera. Aby uzyskać więcej informacji na ten temat, zobacz Menu i zasoby: dodatki kontenera.
Możesz również chcieć obsługiwać niektóre z następujących funkcji w aplikacji kontenera:
Aktywacja w miejscu podczas edytowania osadzonego elementu.
Aby uzyskać więcej informacji, zobacz Aktywacja.
Tworzenie elementów OLE przez przeciąganie i upuszczanie zaznaczenia z aplikacji serwera.
Aby uzyskać więcej informacji, zobacz Przeciąganie i upuszczanie OLE.
Łącza do obiektów osadzonych lub złożonych aplikacji kontenera/serwera.
Aby uzyskać więcej informacji, zobacz Kontenery: funkcje zaawansowane.