Krzysztof Mossakowski
Programowanie w środowisku Windows
2006 - Zadania
Klawiatura, Mysz
Wersja A
Mouse trace
Wzór programu
Opis:
śledzenie ruchu myszką, ograniczenie wizualizacji śledzenia do wybranego fragmentu ekranu
okrągłe okna pokazują ostatnie ruchy kursora myszy
środki wszystkich okien śledzących ruchy kursora zawsze znajdują się wewnątrz okna głównego (z dokładnością do czasu odczytu pozycji kursora)
Funkcjonalność:
Okno:
czerwone, przeźroczystość 50%
możliwość zmiany rozmiaru i położenia
minimalny rozmiar 100x100, należy uniemożliwić zmianę rozmiaru poniżej tych wartości
po kliknięciu lewym przyciskiem w obszar okna, przeciągając kursor można przesuwać krawędzie:
bliższą z poziomych - ruch myszy w pionie
bliższą z pionowych - ruch myszy w poziomie
po kliknięciu lewym przyciskiem w obszar okna z wciśniętym przyciskiem SHIFT, przeciągając kursor można przesuwać całe okno
początkowo okno ma minimalny rozmiar i jego środek znajduje się w pozycji kursora
Ślad myszy:
15 okien, okrągłych, średnice od 5 do 25 pikseli
okna koloru aktywnego paska tytułowego okna
pozycja myszy odczytywana co 50ms
najmniejsze okno wskazuje bieżącą pozycję kursora, kolejne okna poprzednie pozycje (największe okno wskazuje ostatnią pamiętaną pozycję)
środek okna znajduje się w pamiętanej pozycji
początkowo wszystkie okna mają środek w bieżącej pozycji kursora
jeśli pozycja kursora znajduje się poza oknem, należy użyć najbliższego punktu należącago do obszaru okna
najmniejsze okno ma zawsze przeźroczystość 25%
przeźroczystość największego okna można zmieniać w przedziale 25%-100%
klawisz "+" (klawiatura alfanumeryczna i numeryczna) - zmniejszenie przeźroczystości
klawisz "-" (klawiatura alfanumeryczna i numeryczna) - zwiększenie przeźroczystości
w pozostałych oknach stopień przeźroczystości zmiania się liniowo
Dodatkowe wymagania:
na pasku zadań widoczne tylko jedno okno
okno aplikacji zawsze na wierzchu innych okien
kombinacja Alt+F4 kończy działanie aplikacji
menu systemowe po kliknięciu kombinacji Alt+Spacja lub kliknęciu prawym przyciskiem myszy na oknie w pasku zadań
Wskazówki:
SetLayeredWindowAttributes(), WS_EX_LAYERED
SetWindowRgn(), GetWindowRect(), MoveWindow()
przykład stworzenia i ustawienia regionu okna
HRGN region=CreateEllipticRgn(0,0,10,10); SetWindowRgn(hWnd,region,true);
SetCapture(), ReleaseCapture(), GetCursorPos()
ClientToScreen(), ScreenToClient()
SendMessage()
Przybliżona punktacja:
obsługa okna ograniczającego - 2.0
okna śledzące - 3.0
ograniczenia okien - 1.5
zmiana przeźroczystości - 1.5
właściwości okien - 2.0