Dialogi niemodalne
Wersja B
Dwa zsynchronizowane dialogi niemodalne.
- Zawartość obszaru roboczego okna:
- prostokąt z zaokrąglonymi rogami (wykorzystać funkcję RoundRect())
- szerokość, wysokość oraz promień zaokrąglenia rogów ustawiane
na dialogu
- wypełnienie dowolne
- pióro konturu ustawiane na dialogu
- menu z 2 opcjami pokazywania/chowania dialogu niemodalnego (opcja
zaznaczona, jeśli dialog jest widoczny)
- każda z opcji pokazuje/chowa jeden dialog
- oba dialogi identyczne - wykorzystać jeden wzorzec dialogu
z zasobów
- zawsze co najwyżej 2 dialogi mogą być jednocześnie widoczne
- dodać akceleratory do tych opcji (Ctrl+1, Ctrl+2)
- Niemodalny dialog z ustawieniami prezentowanego w oknie prostokąta
- 3 pola edycyjne z szerokością, wysokością prostokąta oraz promieniem
zaokrąglenia rogów (w przypadku nieprawidłowych danych można zawsze
przyjmować wartość 0)
- combobox z grubością linii konturu prostokąta - wartości
1, 3, 5 w rozwijalnej liście, użytkownik może wpisać własną
- kontrolka static z podglądem aktualnych ustawień - UWAGA:
oprogramować porządnie kontrolkę owner drawn (dokładne informacje
techniczne poniżej)
- wszystkie zmiany dokonywane na dialogu powinny być natychmiast
uwidaczniane na podglądzie
- przycisk 'Zastosuj' - odrysować w oknie prostokąt stosownie do
ustawień na dialogu (przed zastosowaniem prostokąt powinien być
odrysowywany według poprzednich ustawień)
- przycisk 'Przywróć' - wszystkie ustawienia na dialogu powinny
zostać przywrócone do tych, według których prostokąt został ostatnio
narysowany
- przycisk 'Zamknij' - zamknięcie okna dialogu
- jeśli 2 dialogi są jednocześnie widoczne, ich zawartość powinna
być idealnie zsynchronizowana (tym zagadnieniem proszę zająć się
w ostatniej kolejności)
- Tworzenie kontrolki static z wykorzystaniem mechanizmu owner
drawn:
- na dialogu w zasobach dodać kontrolkę static (Static
Text)
- zmienić identyfikator dodanej kontrolki (domyślnie jest proponowany
IDC_STATIC, który ma wartość numeryczną -1, przez co niemożliwe
byłoby odwoływanie się do kontrolki z dialogu) - np. IDC_PREVIEW
- zapisać dokonane zmiany (najlepiej File/Save All)
- otworzyć plik zasobów programu (.rc) do edycji w postaci tekstowej
(File/Open, wybrać plik .rc i koniecznie wybrać Open As:
Text - ostatnia opcja na dialogu wyboru plików)
- odnaleźć definicję modyfikowanego dialogu (z kontrolką IDC_PREVIEW),
np:

- do definicji kontrolki IDC_PREVIEW dodać styl SS_OWNERDRAW:
- zamknąć edytowany plik z zapisem zmian
- w funkcji dialogu dodać obsługę komunikatu WM_DRAWITEM z kodem
rysującym kontrolkę, np: