Dialogi niemodalne, kontrolki owner-draw
Wersja A
Rysowanie bitmapy w kontrolce na dialogu
- Wzór programu
- Główne okno:
- menu:
- 'Koniec'
- 'Dialog' - pokazuje nowy dialog niemodalny
- Dialog:
- niemodalny
- z możliwością zmiany rozmiaru (zadbać o poprawną zmianę położenia i/lub rozmiaru kontrolek - jak w programie przykładowym)
- przycisk 'Zamknij' - zamyka okno dialogowe
- podgląd fragmentu bitmapy
- Bitmapa:
- stała wczytywana z zasobów programu (nie z pliku)
- przeskalowana do rozmiaru ekranu
- punkt początkowy bitmapy przesuwa się w kierunku wybranym przez uzytkownika
- klawisze cyfr (1-9) na klawiaturze numerycznej
- zadbać o poprawną reakcję na klawisz w przypadku, gdy aktywny jest dialog
- zsynchronizować odświeżanie na wszystkich dialogach (czyli jeden timer dla całego programu)
- podgląd zawsze pokazuje fragment bitmapy znajdujący się "pod nim"
- zadbać o poprawne złączanie bitmapy na jej końcach (jak w programie przykładowym)
- Uwagi:
- można założyć, że użytkownik nie zmienia rozdzielczości i liczby kolorów podczas pracy programu
- nie ograniczać w żaden sposób liczby widocznych okien dialogowych
- UWAGA: wykorzystanie komunikatu WM_DRAWITEM do rysowania bitmapy na oknie dialogowym jest obowiązkowe
- priorytety:
- szybkość działania
- oszczędność pamięci
- Wskazówki:
- GetSystemMetrics(), SM_CXSCREEN, SM_CYSCREEN
- CreateDialog()
- TranslateAccelerator()
- LoadBitmap()
- SetTimer(), WM_TIMER
- BitBlt(), StretchBlt()
- WM_SIZE, GetDlgItem(), MoveWindow()
- Przybliżona punktacja:
- menu: 0.5
- niemodalne okna dialogowe: 1.0
- przycisk 'Zamknij': 0.5
- zmiana rozmiaru okna dialogowego: 1.0
- wczytanie i przygotowanie bitmapy do wyświetlenia: 1.0
- podgląd bitmapy w oknie dialogowym: 1.5
- obsługa klawiszy zmiany kierunku przesuwania bitmapy: 1.5
- przesuwanie bitmapy: 1.5
- poprawne rysowanie na końcach bitmapy: 1.5