Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Tut]Tworzymy Własny Wygaszacz


Nixxxx

Rekomendowane odpowiedzi

Opublikowano

Jak utworzyć wygaszacz ekranu.

 

Najprostszą metodą stworzenia własnego wygaszacza ekranu jest wykorzystanie znajdującej się w systemie Windows biblioteki scrnsave.dll. Biblioteka ta zawiera w sobie kilka funkcji ułatwiających tworzenie wygaszaczy ekranu. Przede wszystkim jest to funkcja main wraz z kodem inicjalizującym użycie wygaszacza. Dba ona o wywoływanie w odpowiednim momencie okna dialogowego, do ustawiania parametrów wygaszacza, lub wywołanie samego wyświetlacza. Dodatkowo sama zamyka wygaszacz po reakcji użytkownika, a przy jego wywoływaniu czyści tło.

 

Aplikacja powinna zawierać zdefiniowane trzy funkcje: ScreenSaverConfigureDialog i ScreenSaverProc RegisterDialogClasses. Dodatkowo w zasobach powinno być zdefiniowane okno o dialogowe o identyfikatorze 2003. To okno konfiguracyjne jest wyświetlane wtedy, gdy użytkownik wybierze przycisk Ustawienia z zakładki Wygaszacz ekranu okna Właściwości ekranu.

 

Aby utworzyć taki wygaszacz potrzeby jest dowolny kompilator języka C, umożliwiający tworzenie aplikacji dla Windows.

 

Przykładem mogą być darmowe GCC-MINGWIN i LCC-WIN32.

KLIK

 

A wiec zaczynamy od tego ze tworzymy nowy projekt, ustawiamy jego typ na aplikacje Windows (zazwyczaj nazywa się to Windows App), i pouczamy linkiera aby z naszym projektem linkował biblioteki: scrnsave.lib i comctl32.lib. Oczywiście dodajemy ,o ile jest to konieczne a zazwyczaj jest, zasoby w których zdefiniowane jest okno dialogowe o nazwie 2003

 

Budowa wygaszacza.

 

Kod bardzo prostego wygaszacza znajduje się poniżej.

 

To jest ukryta treść, proszę

 

 

 

Plik z zasobami do niego:

 

To jest ukryta treść, proszę

 

 

 

Wygaszacz ten w wersji skompilowanej wraz ze źródłami jest zawarty w spakowanym pliku WygMig.zip

 

Działanie przedstawionego powyżej wygaszacza polega na losowym wyświetlaniu na ekranie punktów. Szybkość z jaka się one pojawiają oraz ich liczbę można regulować w okienku z ustawieniami.

 

Jego rdzeń stanowią wspomniane wcześniej funkcje ScreenSaverConfigureDialog, ScreenSaverProc i RegisterDialogClasses. Nazwy tych funkcji i ich nagłówki są niezbędne i musza wyglądać dokładnie tak jak to zostało pokazane w przykładzie. Inaczej nie zostaną one zlokalizowane.

 

Funkcja ScreenSaverConfigureDialog jest odpowiedzialna za obsługę okna dialogowego służącego do konfiguracji wygaszacza. Natomiast funkcja ScreenSaverProc jest właściwą funkcją obsługująca sam wygaszacz podczas pracy. Jej podstawowym zadanie jest obsługą komunikatów przychodzących od systemu. Najważniejsze z nich to: WM_CREATE, WM_TIMER, WM_DESTROY.

 

Komunikat WM_CREATE jest pierwszym komunikatem jaki otrzymuje program po uruchomieniu.

 

Jego obsługa powinna zawierać

 

- wczytanie danych konfiguracyjnych z rejestru, (funkcja Odczyt),

- inicjacje zmiennych i struktur danych programu,

- inicjacje timera.

 

Komunikat WM_TIMER przychodzi regularnie do aplikacji po uruchomieniu timera. W jego obsłudze powinna być zawarta cala obsługa animacji związanych z wygaszaczem, a więc przede wszystkim rysowanie zawartości ekranu. Zadanie to wykonuje funkcja RysujWygaszacz.

 

Komunikat WM_DESTROY jest sygnałem do zakończenia pracy programu. W trakcie jego wykonywania program usuwa zainicjowany wcześniej timer.

 

Komunikat WM_ERASEBKGND jest wywoływany gdy system zamierza wyczyścić tło przy uruchamianiu wygaszacza. Jest on wywoływany przed wyczyszczeniem tła, w czasie jego obsługi systemowa funkcja obsługi zdarzeń czyści zawartość okna. Dlatego jego przechwytywanie umożliwia operowanie na oryginalnej zawartości ekranu.

 

Zapis ustawień wygaszacza może być przeprowadzany bezpośrednio w rejestrze systemowym. W tym celu program musi stworzyć własny klucz. Można umieścić go w gałęzi: HKEY_LOCAL_MACHINE//SOFTWARE//NazwaFirmy//NazwaProgramu//.. lub :HKEY_CURRENT_USER//software//NazwaFirmy//NazwaProgramu//.

 

Pierwsza gałąź służy do zapisu informacji konfiguracyjnych specyficznych dla całego systemu, natomiast druga jest przeznaczona na informacje związane z konkretnym użytkownikiem.

 

Np. ..//JacekiWacek//WygaszaczLatajaceSledzie

 

Przy pierwszym uruchomieniu wygaszacz powinien potrafić się zorientować że jest uruchamiany pierwszy raz i stworzyć odpowiedni klucz.

 

Trzecią funkcja jaka należy zdefiniować tworząc własny wygaszacz jest: RegisterDialogClasses. Jej zadaniem jest rejestracja przez program własnych obiektów sterujących lub klas dodatkowych okien.

 

Jaki może być wygaszacz i co on będzie robił?

 

To już zależy tylko i wyłącznie od wyobrazili jego twórcy czyli twojej. Ja ze swej strony mogę ci tylko troszkę podpowiedzieć

 

Wygaszacze ekraru podzielił bym na kategorie:

- punktowo - obiektowe,

- bitmapowe,

- obrazowe.

 

Wygaszacz punktowo-obiektowy to taki w którym obraz na ekranie powstaje z szeregu punktów (lub innych prostych obiektów). Program sam je generuje na podstawie odpowiedniego algorytmu i sam je w odpowiednim momencie usuwa. W ten sposób można zrealizować mnóstwo pomysłów które opierają się na układach prostych elementów (punkty, linie, koła). Tego typu jest zaprezentowany powyżej wygaszacz.

 

Wygaszacz bitmapowy jest podobny do wspomnianego wyżej z tym ze nie generuje sam całego obrazu ale korzysta z gotowego zestawy bitmap zapisanych w programie. Może on pokazywać przesuwający się obiekt po ekranie, lub ten sam obiekt w rożnych widokach ( każdy z widoków to oddzielna bitmapa).

 

Wygaszacz obrazowy to taki który nie generuje sam obrazu ale zajmuje się przekształcaniem obrazu widocznego na monitorze w momencie jego wywołania. Może go np. ściemniać, rozmywać lub deformować i inny sposób. Możliwe jest wiele różnych przekształceń.

 

Oczywiście wszystkie powyższe pomysły można jak najbardziej łączyć ze sobą. Nie ma tu żadnych reguł. Czym ciekawsze i nieoczekiwane będzie zachowanie programu tym lepiej.

 

Przykładem jest znany mi wygaszacz przedstawiający chodzącego sobie po ekranie stworka, który co jakiś czas wygryza kawałek ekranu. Jest on połączeniem dwóch ostatnich technik. Zachowywana jest dotychczasowa zawartość ekrany na której stworek jest wyświetlany jako animacja.

×
×
  • Dodaj nową pozycję...