====== Windows Shell ====== ===== Zadanie 1 Ikona w pasku zadań ===== Utwórz aplikację wyświetlającą umieszczającą ikonę w pasku zadań. W momencie startu aplikacji okno główne jest niewidoczne a w pasku zadań (//system tray//) pojawia się ikona i ewentualnie komunikat w postaci tzw. ''dymka''. Kliknięcie LBM powoduje pokazanie okna głównego aplikacji. Minimalizacja lub próba zamknięcia okna powodują ukrycie okna. Kliknięcie RBM w ikonkę na pasku zadań wyświetla menu kontekstowe umożliwiające przywrócić widoczność okna głównego lub zamknąć aplikację. * utwórz własną ikonę o dodaj ją do zasobów aplikacji, * przygotuj strukturę [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb773352%28v=vs.85%29.aspx|NOTIFYICONDATA]]. Podaj tu wcześniej wczytaną ikonę. Dodaj tekst wyświetlany po najechaniu kursorem na ikonę (tip). * umieść ikonę w pasku zadań za pomocą funkcji [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb762159%28v=vs.85%29.aspx|Shell_NotifyIcon]]. Ikona powinna być automatycznie usuwana w momencie zamknięcia aplikacji. * dodaj własny komunikat (np. WM_USER_SHELLICON) obsługiwany podczas kliknięcia ikony. Obsłuż komunikaty związane z kliknięciem lewego i prawego klawisza myszy na ikonie zgodnie z treścią zadania. * Kliknięcie LBM powoduje pokazanie się okna głownego (które domyślnie jest ukryte). Minimalizacja lub próba zamknięcia okna głównego powoduje ponowne jego ukrycie. Obsłuż w tym celu komunikat okna [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms646360%28v=vs.85%29.aspx|WM_SYSCOMMAND]], * Kliknięcie RBM otwiera menu kontekstowe pozwalające zamknąć aplikację. Do tworzenia menu można wykorzystać funkcje [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms647626%28v=vs.85%29.aspx|CreatePopupMenu]] oraz [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms647616%28v=vs.85%29.aspx|AppendMenu]]. Wyświetlenie menu kontekstowego odbywa się za pomocą funkcji [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms648002%28v=vs.85%29.aspx|TrackPopupMenu]]. Pozycję kursora uzyskujemy z [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms648390%28v=vs.85%29.aspx|GetCursorPos]]. Niezbędne jest też ustawienie okna na pierwszym planie [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633539%28v=vs.85%29.aspx|SetForegroundWindow]]. * Dodaj wyświetlanie komunikatu balonowego w momencie startu aplikacji. ===== Zadanie 2 - Zestaw podręcznych narzędzi ===== Do menu kontekstowego z poprzedniego zadania dodaj podmenu zawierające zestaw narzędzi i skrótów do aplikacji. Przykładowe akcje udostępniane przez menu: * wyświetlenie okna z informacjami o systemie operacyjnym (About), * uruchomienie przeglądarki internetowej, np. Forefox, * otworzenie katalogu użytkownika w Eksploratorze, * uruchomienie wyszukiwania plików w katalogu domowym użytkownika, Wykorzystaj funkcję [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx|ShellExecute]] do otwierania aplikacji i plików oraz [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb762152%28v=vs.85%29.aspx|ShellAbout]] do wyświetlenia informacji o systemie. Folder użytkownika uzyskaj korzystając z funkcji [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb762188%28v=vs.85%29.aspx|SHGetKnownFolderPath]] (plik nagłówkowy ''Shlobj.h'').