Implementacja aktywacji In-Place
Aktywacja w miejscu umożliwia użytkownikowi interakcję z obiektem osadzonym bez opuszczania dokumentu kontenera. Gdy użytkownik aktywuje obiekt, pasek menu złożonego składający się z elementów z pasków menu aplikacji kontenera i aplikacji serwera zastępuje pasek menu głównego kontenera. Polecenia i funkcje obu aplikacji są zatem dostępne dla użytkownika, w tym pomoc kontekstowa dla aktywnego obiektu. Gdy użytkownik zacznie pracować z częścią dokumentu, która nie jest obiektem, obiekt zostanie zdezaktywowany, co powoduje, że oryginalne menu dokumentu kontenera zastąpi menu kompozytowe.
Ta funkcja pierwotnie nazywała się edycja w kontekście. Nazwa została zmieniona, ponieważ edytowanie jest tylko jednym ze sposobów interakcji użytkownika z uruchomionym obiektem. Klipy dźwiękowe, na przykład, można słuchać zamiast edycji. Klipy wideo można wyświetlać zamiast edytować. Aktywacja w miejscu jest szczególnie przydatna w przypadku klipów wideo, ponieważ pozwala na ich uruchamianie bez wywoływania oddzielnego okna. Może to mieć kluczowe znaczenie, jeśli wideo ma być wyświetlane, powiedzmy, w połączeniu z sąsiednimi danymi tekstowymi w dokumencie kontenera.
Implementowanie aktywacji w miejscu jest ściśle opcjonalne zarówno dla aplikacji kontenera, jak i serwera. Ole nadal obsługuje model, w którym aktywowanie obiektu powoduje otwarcie oddzielnego okna przez aplikację serwera. Połączone obiekty są zawsze otwierane w osobnym oknie, aby podkreślić, że znajdują się w osobnym dokumencie.
Aktywacja w miejscu rozpoczyna się od obiektu w odpowiedzi na wywołanie IOleObject::DoVerb z kontenera. To wywołanie zwykle występuje w odpowiedzi na dwukrotne kliknięcie obiektu przez użytkownika lub wybranie polecenia (zlecenie) z menu Edycja aplikacji kontenera.
Okno osadzone odbiera sygnały klawiatury i myszy, gdy obiekt jest aktywny. Gdy użytkownik wybierze polecenia na pasku menu złożonego, polecenia i skojarzone komunikaty menu są wysyłane do aplikacji kontenera lub obiektu, w zależności od wybranego menu rozwijanego. Dane wejściowe za pomocą linijek, pasków narzędzi lub ramek obiektu przechodzą bezpośrednio do obiektu osadzonego, który jest właścicielem tych okien.
Aktywowany lokalnie obiekt osadzony pozostaje aktywny, dopóki kontener nie zdezaktywuje go w odpowiedzi na dane wejściowe użytkownika lub obiekt dobrowolnie rezygnuje ze stanu aktywnego, na przykład klip wideo. Użytkownik może dezaktywować obiekt, klikając wewnątrz dokumentu kontenera, lecz poza oknem aktywacji bezpośredniej obiektu, lub po prostu klikając inny obiekt. Obiekt aktywowany w miejscu pozostaje aktywny, jednak jeśli użytkownik kliknie pasek tytułu kontenera, pasek przewijania lub, w szczególności, pasek menu.
Można zaimplementować serwer in-place-activation-object jako serwer w procesie (DLL) lub serwer lokalny (EXE). W obu przypadkach pasek menu złożonego zawiera elementy (zazwyczaj menu rozwijane) zarówno z serwera, jak i procesów kontenera. W przypadku serwera przetwarzania w toku okno aktywacji lokalnej to po prostu kolejne okno podrzędne w hierarchii okien kontenera, odbierające dane wejściowe za pośrednictwem pętli komunikatów aplikacji kontenera.
W przypadku serwera lokalnego okno aktywacji na miejscu należy do procesu aplikacji serwera obiektu osadzonego, ale jego okno nadrzędne należy do kontenera. Dane wejściowe okna aktywacji w miejscu są wyświetlane w kolejce komunikatów serwera i są wysyłane przez pętlę komunikatów serwera. Biblioteki OLE są odpowiedzialne za zapewnienie, że polecenia menu i komunikaty są prawidłowo przetwarzane.
Tematy pokrewne