Udostępnij za pośrednictwem


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

  1. Zainicjuj biblioteki OLE przez wywołanie AfxOleInit funkcji składowej InitInstance .

  2. 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

  1. Ś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.

  2. Zastąpij, IsSelected aby sprawdzić, czy element przekazany do niego jest aktualnie zaznaczony.

  3. Zaimplementuj procedurę obsługi komunikatówOnInsertObject, aby wyświetlić okno dialogowe Wstawianie obiektu.

  4. Zaimplementuj procedurę obsługi komunikatów OnSetFocus , aby przenieść fokus z widoku do aktywnego elementu osadzonego OLE w miejscu.

  5. 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

  1. Utwórz klasę z klasy COleClientItem. Obiekty tej klasy reprezentują elementy, które zostały osadzone lub połączone z dokumentem OLE.

  2. Zastąpij OnChangewartości , OnChangeItemPositioni OnGetItemPosition. 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.

Zobacz też

Kontenery
Kontenery: elementy klienckie