Edytuj stronę Odnośniki Fold/unfold all ODT export Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić. ====== Kontrolki i Pliki ====== ===== Lista okien ===== Napisz program, który wypisze nazwy (tytuły) wszystkich aktywnych okien. Aplikacja zawiera kontrolkę [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775146(v=vs.85).aspx|List Box]] oraz przycisk ''Odśwież''. Po wciśnięciu przycisku ''Odśwież'' w kontrolce List Bix pojawia się lista okien. Dodaj kontrolkę [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb760728(v=vs.85).aspx|Status Bar]], która wyświetla liczbę okien w kontrolce List Box. Zadbaj o to, aby kontrolki wybełniały poprawnie wnętrze okna głównego w przypadku zmiany rozmiaru tego ostaniego. [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775493(v=vs.85).aspx|Common controls]] * plik nagłówkowy: ''commctrl.h'' * plik biblioteki linkowany z projektem: ''comctl32.lib'' (domyślnie brak w projekcie Visual Studio) * [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775695(v=vs.85).aspx|InitCommonControls()]] lub [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775697(v=vs.85).aspx|InitCommonControlsEx()]] funkcja inicjująca bibliotekę Kontrolka [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775146(v=vs.85).aspx|List Box]] * komunikat [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775181(v=vs.85).aspx|LB_ADDSTRING]] dodaje łańcuch znakowy do listy kontrolki List Box * komunikat [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775195(v=vs.85).aspx|LB_GETCOUNT]] zwraca liczbę elementów na liście * styl [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775149(v=vs.85).aspx#LBS_SORT|LBS_SORT]] zmusza List Box do umieszczania elementów w kolejności alfabetycznej * komunikat [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb761325(v=vs.85).aspx|LB_RESETCONTENT]] usuwa wszystkie elementy z List Box Lista okien: * funkcja [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633497(v=vs.85).aspx|EnumWindows ]] pozwala wykonać funkcję dla każdego okna * funkcja zwrotna [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633498(v=vs.85).aspx|EnumWindowsProc]] uruchamiana przez EnumWindows() dla kolejnych okien [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb760726(v=vs.85).aspx|Status bar]] * klasa okien ''STATUSCLASSNAME'' * [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb760757(v=vs.85).aspx|SB_SETPARTS]] na ile części podzielić * [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb760758(v=vs.85).aspx|SB_SETTEXT]] wstawienie tekstu do status bara Zmiana rozmiaru okna: * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms632646(v=vs.85).aspx|WM_SIZE]] komunikat wysyłany po zmianie rozmiaru okna * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633519(v=vs.85).aspx|GetWindowRect]] rozmiary całego okna * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633503(v=vs.85).aspx|GetClientRect]] rozmiary obszaru klienckiego * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx|SetWindowPos]] ustawienie pozycji i rozmiaru okna ===== Notatnik cd. ===== Na oknie głównym umieść kontrolkę edycyjną, która wypełni całą powierzchnię okna. Przy zmianie okna głównego kontrolka edycyjna powinna dopasowywać odpowiednio swoje rozmiary. Dodaj do menu możliwość zapisu zawartości kontrolki edycyjnej do pliku tekstowego oraz możliwość wczytania zawartości pliku tekstowego do kontrolki edycyjnej. Wybór pliku do odczytu/zapisu odbywa się za pomocą odpowiednich okien dialogowych ([[https://msdn.microsoft.com/en-us/library/windows/desktop/ms646927(v=vs.85).aspx|GetOpenFileName()]], [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms646928(v=vs.85).aspx|GetSaveFileName()]]). Dodaj Status Bar informujący o wykonanej ostatnio akcji (zapis / odczyt, nazwa pliku ), ilości wierszy w kontrolce edycyjnej. Dodaj do aplikacji Tool Bar zawierający przyciski umożliwiające wykonać operacje z menu ''Plik'' (Nowy, Otwórz i Zapisz). Zadbaj o to, żeby w momencie zmiany wielkości okna głównego kontrolka edycyjna wypełniała całą wolną przestrzeń kliencką okna głównego pomiędzy Tool Barem (u góry) i Status Barem (u dołu). === Przydatne funkcje === **[[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775493(v=vs.85).aspx|Common controls]]** * plik nagłówkowy: ''commctrl.h'' * plik biblioteki linkowany z projektem: ''comctl32.lib'' * [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775695(v=vs.85).aspx|InitCommonControls()]] lub [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb775697(v=vs.85).aspx|InitCommonControlsEx()]] funkcja inicjująca bibliotekę **File Dialogs** * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms646839(v=vs.85).aspx|OPENFILENAME]] struktura zawierająca informacje dla dwóch poniższych funkcji * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms646927(v=vs.85).aspx|GetOpenFileName()]] otwiera okno dialogowe do wyboru pliku * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms646928(v=vs.85).aspx|GetSaveFileName()]] tworzy kontrolkę dialogową do wyboru pliku do zapisu **Zapis/odczyt z plików** * [[https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx|CreateFile()]] tworzenie pliku * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms724211(v=vs.85).aspx|CloseHandle()]] zamyka plik * [[https://msdn.microsoft.com/en-us/library/windows/desktop/aa364955(v=vs.85).aspx|GetFileSize()]] pobiera rozmiar pliku * [[https://msdn.microsoft.com/en-us/library/windows/desktop/aa365467(v=vs.85).aspx|ReadFile()]] odczyt danych z pliku * [[https://msdn.microsoft.com/en-us/library/windows/desktop/aa365747(v=vs.85).aspx|WriteFile()]] zapis danych do pliku **[[https://msdn.microsoft.com/en-us/library/windows/desktop/bb760726(v=vs.85).aspx|Status bar]]** * klasa okien ''STATUSCLASSNAME'' * [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb760757(v=vs.85).aspx|SB_SETPARTS]] na ile części podzielić * [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb760758(v=vs.85).aspx|SB_SETTEXT]] wstawienie tekstu do status bara **Operacje na napisach** * plik nagłowkowy ''tchar.h'' * **[[https://msdn.microsoft.com/en-us/library/f30dzcf6.aspx|_sntprintf_s]]** formatowanie napisu za pomocą składni zgodną z ''sprintf'' * **[[https://msdn.microsoft.com/en-us/library/ms860529.aspx|_itot]]** zamiana liczby całkowitej na napis * **[[https://msdn.microsoft.com/en-us/library/windows/desktop/ms647492(v=vs.85).aspx|lstrlen]]** lub **[[https://msdn.microsoft.com/en-us/library/78zh94ax.aspx|_tcslen]]** wyznacza długość napisu **Zmiana rozmiaru okna:** * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms632646(v=vs.85).aspx|WM_SIZE]] komunikat wysyłany po zmianie rozmiaru okna * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633519(v=vs.85).aspx|GetWindowRect]] rozmiary całego okna * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633503(v=vs.85).aspx|GetClientRect]] rozmiary obszaru klienckiego * [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx|SetWindowPos]] ustawienie pozycji i rozmiaru okna **Tworzenie kontrolki tool bar:** * klasa okien TOOLBARCLASSNAME z Common controls * komunikat [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb787291(v=vs.85).aspx|TB_ADDBUTTONS]] dodający przycisk do tool bara * komunikat [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb787295(v=vs.85).aspx|TB_AUTOSIZE]] dopasowuje rozmiar kontrolki do zawartości * [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb760439(v=vs.85).aspx|Toolbar Control and Button Styles]] * struktura [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb760476(v=vs.85).aspx|TBBUTTON]] zawiera informacje o każdym z przycisków tool bara