MENU

Programowanie wieloplatformowe z C++ i wxWidgets 3

(eBook)
0.00  [ 0 ocen ]
 Dodaj recenzję
Rozwiń szczegóły »
  • Druk: Warszawa, 2018

  • Autor: Bartosz W. Warzocha

  • Wydawca: Wydawnictwo Naukowe PWN

  • Formaty:
    PDF
    (Watermark)
    Watermark
    Znak wodny czyli Watermark to zaszyfrowana informacja o użytkowniku, który zakupił produkt. Dzięki temu łatwo jest zidentyfikować użytkownika, który rozpowszechnił produkt w sposób niezgodny z prawem. Ten rodzaj zabezpieczenia jest zdecydowanie najbardziej przyjazny dla użytkownika, ponieważ aby otworzyć książkę zabezpieczoną Watermarkiem nie jest potrzebne konto Adobe ID oraz autoryzacja urządzenia.

Cena katalogowa: 149,00 zł
Najniższa cena z 30 dni: 74,50 zł
Cena produktu

Cena katalogowa – rynkowa cena produktu, często jest drukowana przez wydawcę na książce.

Najniższa cena z 30 dni – najniższa cena sprzedaży produktu w księgarni z ostatnich 30 dni, obowiązująca przed zmianą ceny.

Wszystkie ceny, łącznie z ceną sprzedaży, zawierają podatek VAT.

89,40
Dodaj do schowka
Dostępność: online po opłaceniu
Produkt elektroniczny Plik do pobrania po realizacji zamówienia

Programowanie wieloplatformowe z C++ i wxWidgets 3

Biblioteka wxWidgets jest potężnym, wieloplatformowym narzędziem, stworzonym do pisania aplikacji okienkowych, przeznaczonych dla wszystkich popularnych systemów operacyjnych. Jest wzbogacona o szereg narzędzi, umożliwiających realizację większości zadań i wymagań stawianych przed nowoczesnymi programami - w tym m.in. pełną obsługę współbieżności, obsługę protokołów sieciowych, czy też obsługę nowoczesnego OpenGL, choć to jedynie mała część jej możliwości. Co ważne, licencja wxWidgets pozwala na jej dowolne wykorzystanie w projektach każdego rodzaju, natomiast bogaty zestaw rozszerzeń znakomicie zwiększa zakres, w którym może być stosowana.
Biblioteka wxWidgets jest wykorzystywana między innymi przez NASA do tworzenia oprogramowania pracującego z teleskopami kosmicznymi, a także przez koncern zbrojeniowy Lockheed Martin, czy też firmę AMD. Z jej pomocą stworzono szereg popularnych aplikacji, takich jak FileZilla, CodeLite, czy RapidSVN, a także wiele innych.
Niniejsza książka to kompleksowy i wyjątkowy przewodnik po wxWidgets. To publikacja skierowana do wszystkich programistów C++ – także tych, którzy stawiają pierwsze kroki w świecie programowania GUI i programowania wieloplatformowego. Każdy kolejny rozdział wprowadza Czytelnika w coraz bardziej złożone i zaawansowane techniki wxWidgets, a zawarte w niej liczne przykłady kodu można uruchomić na większości popularnych platform systemowych. Możliwe będzie poznanie m.in. wyglądu struktury aplikacji wxWidgets oraz działanie i możliwość wykorzystania kluczowych typów wxWidgets takich jak wxString czy wxDateTime.
Dzięki lekturze Czytelnik nauczy się:
jak utworzyć pierwsze okno, wzbogacając je o pasek stanu i pasek menu oraz inne elementy i kontrolki GUI, pracować ze standardową i dynamiczną obsługą zdarzeń, pisać atrakcyjne programy, wykorzystywać standardowe okna dialogowe oraz pisać własne i kontrolować pozyskiwane przy ich pomocy dane wejściowe, pracować z plikami, czy formatem XML, przechowywać konfigurację programu, tworzyć aplikacje obsługujące różne języki, w jaki sposób napisać własny serwer oraz aplikację kliencką, stworzyć własnego klienta FTP, czy obsłużyć protokół HTTP, projektować oraz realizować własne kontrolki GUI, korzystać z innych zaawansowanych komponentów biblioteki, umożliwiających tworzenie nowoczesnych aplikacji komputerowych różnego typu.

  • Sposób dostarczenia produktu elektronicznego
    Produkty elektroniczne takie jak Ebooki czy Audiobooki są udostępniane online po opłaceniu zamówienia kartą lub przelewem na stronie Twoje konto > Biblioteka.
    Pliki można pobrać zazwyczaj w ciągu kilku-kilkunastu minut po uzyskaniu poprawnej autoryzacji płatności, choć w przypadku niektórych publikacji elektronicznych czas oczekiwania może być nieco dłuższy.
    Sprzedaż terytorialna towarów elektronicznych jest regulowana wyłącznie ograniczeniami terytorialnymi licencji konkretnych produktów.
  • Ważne informacje techniczne
    Minimalne wymagania sprzętowe:
    procesor: architektura x86 1GHz lub odpowiedniki w pozostałych architekturach
    Pamięć operacyjna: 512MB
    Monitor i karta graficzna: zgodny ze standardem XGA, minimalna rozdzielczość 1024x768 16bit
    Dysk twardy: dowolny obsługujący system operacyjny z minimalnie 100MB wolnego miejsca
    Mysz lub inny manipulator + klawiatura
    Karta sieciowa/modem: umożliwiająca dostęp do sieci Internet z prędkością 512kb/s
    Minimalne wymagania oprogramowania:
    System Operacyjny: System MS Windows 95 i wyżej, Linux z X.ORG, MacOS 9 lub wyżej, najnowsze systemy mobilne: Android, iPhone, SymbianOS, Windows Mobile
    Przeglądarka internetowa: Internet Explorer 7 lub wyżej, Opera 9 i wyżej, FireFox 2 i wyżej, Chrome 1.0 i wyżej, Safari 5
    Przeglądarka z obsługą ciasteczek i włączoną obsługą JavaScript
    Zalecany plugin Flash Player w wersji 10.0 lub wyżej.
    Informacja o formatach plików:
    • PDF - format polecany do czytania na laptopach oraz komputerach stacjonarnych.
    • EPUB - format pliku, który umożliwia czytanie książek elektronicznych na urządzeniach z mniejszymi ekranami (np. e-czytnik lub smartfon), dając możliwość dopasowania tekstu do wielkości urządzenia i preferencji użytkownika.
    • MOBI - format zapisu firmy Mobipocket, który można pobrać na dowolne urządzenie elektroniczne (np.e-czytnik Kindle) z zainstalowanym programem (np. MobiPocket Reader) pozwalającym czytać pliki MOBI.
    • Audiobooki w formacie MP3 - format pliku, przeznaczony do odsłuchu nagrań audio.
    Rodzaje zabezpieczeń plików:
    • Watermark - (znak wodny) to zaszyfrowana informacja o użytkowniku, który zakupił produkt. Dzięki temu łatwo jest zidentyfikować użytkownika, który rozpowszechnił produkt w sposób niezgodny z prawem. Ten rodzaj zabezpieczenia jest zdecydowanie bardziej przyjazny dla użytkownika, ponieważ aby otworzyć książkę zabezpieczoną Watermarkiem nie jest potrzebne konto Adobe ID oraz autoryzacja urządzenia.
    • Brak zabezpieczenia - część oferowanych w naszym sklepie plików nie posiada zabezpieczeń. Zazwyczaj tego typu pliki można pobierać ograniczoną ilość razy, określaną przez dostawcę publikacji elektronicznych. W przypadku zbyt dużej ilości pobrań plików na stronie WWW pojawia się stosowny komunikat.
Od autora XXVII
	Podziękowania XXVIII
Wprowadzenie XXIX
	Zakres tematyczny książki XXIX
	Ważna uwaga o konstrukcji książki, czyli zanim kupisz XXIX
	Dla kogo jest ta książka? XXXI
	Konwencje przyjęte w książce XXXI
	Warsztat XXXIII
		MS Windows XXXIII
			Microsoft Visual C++ XXXIII
			Code::Blocks XXXIII
		Inne XXXIV
			PoEdit XXXIV
			GIMP XXXIV
	Materiały dodatkowe do książki XXXIV
	Errata i aktualizacje XXXIV
	Notka prawna XXXV
Część I Poznajemy wxWidgets 3 1
1. Biblioteka 3
	1.1. Czym jest wxWidgets? 3
	1.2. Pobieranie i instalacja wxWidgets 4
		1.2.1. Konwencje numerowania wersji biblioteki 5
		1.2.2. Instalacja wxWidgets w systemach MS Windows 5
			1.2.2.1. Zmienna systemowa WXWIN 5
		1.2.3. Instalacja wxWidgets w systemach Ubuntu i Mint 6
			1.2.3.1. Ręczna instalacja biblioteki z archiwum tar 6
			1.2.3.2. Instalacja wxWidgets z pakietu Ubuntu/Debian 10
	1.3. Foldery i pliki wxWidgets 11
	1.4. Kompilacja wxWidgets 13
		1.4.1. Plik setup.h i standardowe parametry kompilacji 13
			1.4.1.1. Ustawienia globalne (global settings) 13
			1.4.1.2. Ustawienia kompatybilności wersji (compatibility settings) 14
			1.4.1.3. Ustawienia debugowania (debugging settings) 14
			1.4.1.4. Wsparcie standardu Unicode (Unicode support) 14
			1.4.1.5. Funkcje globalne (global features) 14
			1.4.1.6. Współpraca z biblioteką standardową (Interoperability with the standard library) 15
			1.4.1.7. Opcje niezwiązane z GUI (Non GUI features selection) 16
			1.4.1.8. Kontrolki GUI (Individual GUI controls) 20
			1.4.1.9. Różności GUI (Miscellaneous GUI Stuff) 23
			1.4.1.10. Okna dialogowe (common dialogs) 24
			1.4.1.11. Wsparcie metaplików (Metafiles support) 25
			1.4.1.12. Duże kontrolki GUI (Big GUI controls) 26
			1.4.1.13. Przetwarzanie danych (Data transfer) 26
			1.4.1.14. Ustawienia różne (Miscellaneous settings) 27
			1.4.1.15. Klasy wxDC (wxDC classes for various output formats) 27
			1.4.1.16. Wsparcie dla formatów graficznych (image format support) 28
			1.4.1.17. Inne opcje pliku setup.h 28
			1.4.1.18. Opcje zależne od platformy 29
		1.4.2. Kompilacja wxWidgets w systemach MS Windows 29
		1.4.3. Kompilacja wxWidgets w systemach Ubuntu Linux i Mint Linux 29
	1.5. Struktura biblioteki wxWidgets 29
	1.6. Słowo o konwencjach i stylu kodowania w wxWidgets 30
		1.6.1. Pliki 31
		1.6.2. Konwencje nazewnicze 31
		1.6.3. Styl kodowania 31
		1.6.4. Jakość kodu 32
		1.6.5. Ograniczenia C++ 32
		1.6.6. Inne 33
2. Przygotowanie projektu 34
	2.1. Visual C++ (MS Windows) 34
		2.1.1. Utworzenie projektu 35
		2.1.2. Konfiguracja projektu 36
			2.1.2.1. Konfiguracja x86 (Win32) 37
			2.1.2.2. Konfiguracja x64 43
		2.1.3. Dodanie plików źródłowych 50
		2.1.4. Zapisanie szablonu projektu 50
	2.2. Code::Blocks (Ubuntu i Mint) 52
		2.2.1. Utworzenie projektu 52
		2.2.2. Konfiguracja projektu 54
			2.2.2.1. Ogólne opcje projektu 54
			2.2.2.2. Opcje kompilacji i konsolidacji 55
		2.2.3. Dodanie plików źródłowych 56
		2.2.4. Zapisanie szablonu projektu 58
		2.2.5. Rozwiązywanie problemów z kodowaniem plików 58
		2.2.6. Rozwiązywanie problemów z wieloma wersjami wxWidgets 58
			2.2.6.1. Wybór wersji wxWidgets za pomocą wx-config 58
			2.2.6.2. Wybór wersji wxWidgets za pomocą własnego pliku Makefile 59
	2.3. O projektach Code::Blocks i wxWidgets w systemach MS Windows 61
	2.4. Podsumowanie 62
3. Pierwsze okno 63
	3.1. Ogólna struktura aplikacji 63
	3.2. Szczegóły głównego okna programu 66
		3.2.1. Modyfikowanie konstruktora 68
	3.3. Pasek stanu 69
		3.3.1. Funkcja CreateStatusBar() 69
		3.3.2. Więcej opcji paska stanu 70
			3.3.2.1. Modyfikacja rozmiarów pól paska stanu 70
			3.3.2.2. Modyfikacja liczby pól paska stanu 72
		3.3.3. Zaawansowane tworzenie paska stanu 72
	3.4. Pasek menu 73
		3.4.1. Realizacja paska menu 73
		3.4.2. Sprytne odmiany funkcji Append() 76
		3.4.3. Skróty klawiaturowe menu 78
		3.4.4. Dygresja graficzna, czyli słowo o ikonach w menu 79
		3.4.5. Co dalej? 79
4. Obsługa zdarzeń 80
	4.1. Wprowadzenie do obsługi zdarzeń 80
		4.1.1. Identyfikatory 80
		4.1.2. Funkcje akcji programu 81
		4.1.3. Tablica zdarzeń 83
		4.1.4. Uzupełniamy program modelowy 84
	4.2. Wokół pętli zdarzeń... 86
	4.3. Niektóre metody klasy wxCommandEvent 88
	4.4. Rozpoznawanie inicjatora zdarzenia za pomocą funkcji GetId() 90
		4.4.1. Składanie zdarzeń 90
		4.4.2. Zakresowe makra obsługi zdarzeń 91
	4.5. Dynamiczna obsługa zdarzeń 92
		4.5.1. Odrobina klasyki, czyli funkcje Connect() i Disconnect() 92
		4.5.2. Z duchem czasu, czyli funkcje Bind() i Unbind() 94
		4.5.3. Standard C++11 i obsługa zdarzeń wxWidgets 96
	4.6. Wbudowane identyfikatory wxWidgets 97
		4.6.1. Wbudowane identyfikatory wxWidgets i odkrywanie tajemnic menu 98
	4.7. Wyjątkowe zdarzenie wxEVT_CLOSE_WINDOW 99
		4.7.1. Realizacja pytania o wyjście z programu 99
	4.8. Zdarzenia myszy i klawiatury 100
		4.8.1. Obsługa zdarzeń myszy 100
		4.8.2. Obsługa zdarzeń klawiatury 103
			4.8.2.1. Problem globalnej obsługi zdarzeń klawiatury 106
	4.9. Inne rodzaje zdarzeń 108
	4.10. Pisanie własnych zdarzeń 110
		4.10.1. Kiedy i gdzie stosować własne zdarzenia? 110
		4.10.2. Realizacja własnych zdarzeń 111
			4.10.2.1. Podstawowa realizacja własnych zdarzeń 111
			4.10.2.2. Zaawansowana realizacja własnych zdarzeń 112
5. Zanim przejdziemy dalej... 116
	5.1. Kod aplikacji wxWidgets w różnych plikach 116
	5.2. Podobieństwo konstruktorów i metod, czyli słowo o tym, jak łatwo i szybko opanować wxWidgets 116
	5.3. Konstruktor czy Create()? 119
Część II Zdobywamy obszar klienta 121
6. Wisielec, czyli podstawowe kontrolki i techniki wxWidgets 123
	6.1. Koncepcja programu 124
	6.2. Kilka uwag o menu Wisielca 125
	6.3. Klasa wxPanel – podstawowy kontener GUI 126
	6.4. Grafika w programie: wxBitmap, wxImage i wxIcon 127
		6.4.1. Procedury obsługi grafiki 127
		6.4.2. Klasa wxBitmap 128
			6.4.2.1. Tworzenie bitmapy i inicjowanie jej danymi 129
			6.4.2.2. Tajemniczy format XPM 130
			6.4.2.3. Obiekty wxBitmap i grafika wbudowana 131
			6.4.2.4. Operacje na wxBitmap 133
		6.4.3. Klasa wxImage 135
			6.4.3.1. Tworzenie obiektów wxImage 135
			6.4.3.2. Operacje na wxImage 136
			6.4.3.3. Przekształcanie bitmapy wxBitmap za pomocą wxImage 137
		6.4.4. Klasa wxIcon 138
	6.5. Lokalizacja plików aplikacji w różnych systemach operacyjnych 139
			6.5.4.1. Pomocne funkcje narzędziowe i plik utils.h 142
	6.6. Ustawiamy ikonę programu 143
	6.7. Pasek narzędzi wxToolBar 144
		6.7.1. Realizacja paska narzędzi 144
		6.7.2. Zarządzanie paskiem narzędzi 148
		6.7.3. Menu w pasku narzędzi 150
		6.7.4. Kontrolki w pasku narzędzi 151
	6.8. Statyczne elementy GUI 153
		6.8.1. Klasa wxStaticText 153
		6.8.2. Klasa wxStaticBitmap 154
		6.8.3. Klasa wxStaticLine 155
		6.8.4. Klasa wxStaticBox 155
	6.9. Wprowadzenie do programowania GUI opartego na relacjach 156
		6.9.1. Czym są sizery? 157
		6.9.2. Klasa wxBoxSizer 157
		6.9.3. Klasa wxStaticBoxSizer 159
		6.9.4. Analiza przypadków 159
			6.9.4.1. Przypadek 1 – prosty sizer liniowy 159
			6.9.4.2. Przypadek 2 – klasyczne okno dialogowe 162
			6.9.4.3. Przypadek 3 – koncepcja GUI Wisielca 163
		6.9.5. Składamy szkielet GUI Wisielca 165
	6.10. Czcionki i kolory w wxWidgets 169
		6.10.1. Klasa wxFont 169
			6.10.1.1. Modyfikacja utworzonych czcionek 171
			6.10.1.2. Użycie czcionek wxFont 172
			6.10.1.3. Ustawiamy czcionki Wisielca 173
		6.10.2. Klasa wxColour, baza kolorów i inne kolorowe ciekawostki 173
			6.10.2.1. Przetwarzanie danych koloru 176
			6.10.2.2. Słowo o kolorach z wxStockGDI 177
			6.10.2.3. Kolory systemowe 178
			6.10.2.4. Użycie kolorów wxWidgets 179
			6.10.2.5. Ustawiamy kolory GUI Wisielca 180
	6.11. Wstęp do podstawowych kontrolek dynamicznych 181
		6.11.1. Okno tekstowe wxTextCtrl 182
			6.11.1.1. Tworzymy kontrolkę tekstową wxTextCtrl 182
			6.11.1.2. Ważniejsze metody klasy wxTextCtrl 184
			6.11.1.3. Zdarzenia klasy wxTextCtrl i ich obsługa 187
		6.11.2. Świat przycisków wxWidgets 189
			6.11.2.1. Klasa wxButton 189
			6.11.2.2. Klasa wxToggleButton 191
			6.11.2.3. Klasa wxBitmapButton 192
		6.11.3. Lista rozwijana wxComboBox 192
			6.11.3.1. Klasa wxArrayString 193
			6.11.3.2. Realizacja listy rozwijanej 194
			6.11.3.3. Niektóre metody klasy wxComboBox 195
			6.11.3.4. Obsługa zdarzeń listy rozwijanej 196
		6.11.4. Kontrolki numeryczne wxSpinCtrl i wxSpinCtrlDouble 197
			6.11.4.1. Klasa wxSpinCtrl 197
			6.11.4.2. Klasa wxSpinCtrlDouble 198
			6.11.4.3. Style kontrolek numerycznych 199
			6.11.4.4. Ważniejsze metody kontrolek numerycznych 199
			6.11.4.5. O zdarzeniach kontrolek numerycznych 200
	6.12. Inne kontrolki wxWidgets 201
		6.12.1. Jak korzystać z dokumentacji klas wxWidgets 202
	6.13. Kompletujemy GUI Wisielca 203
		6.13.1. Log 203
		6.13.2. Ustawienia 205
	6.14. Rysowanie szubienicy, czyli tajemnice klasy wxDC 207
		6.14.1. Dostępne konteksty urządzeń 207
		6.14.2. Rysowanie z wxDC w praktyce 208
			6.14.2.1. Pióro i pędzel 208
			6.14.2.2. Metody rysujące 210
		6.14.3. Pierwsze rysunki 214
			6.14.3.1. Rysowanie w obszarze klienta (wxClientDC) 214
			6.14.3.2. Rysowanie za pomocą myszy 218
		6.14.4. Znaczenie zdarzenia wxEVT_PAINT i wieloplatformowość 219
			6.14.4.1. Uniwersalny wieloplatformowy blok rysunkowy 220
		6.14.5. Piszemy funkcję rysującą szubienicę 221
	6.15. Wykończyć Wisielca! 224
		6.15.1. Założenia 224
		6.15.2. Niezbędne zmienne i funkcje 225
		6.15.3. Wprowadzanie odgadywanych liter z klawiatury 226
		6.15.4. Obsługa logu 227
		6.15.5. Mierzenie czasu 228
		6.15.6. Ustawienie stanu początkowego gry 229
		6.15.7. Funkcja wyświetlająca hasło 230
		6.15.8. Rozpoczęcie gry 230
		6.15.9. Przebieg rozgrywki 232
		6.15.10. Zakończenie gry 236
		6.15.11. Przerwanie gry 237
	6.16. Podsumowanie 238
7. Własny edytor C++, czyli bardziej zaawansowane kontrolki i techniki wxWidgets 239
	7.1. Koncepcja programu 240
	7.2. Przygotowanie szkieletu aplikacji 241
		7.2.1. Tworzymy główne okno 241
		7.2.2. Realizujemy pasek menu z ikonami 242
		7.2.3. Pasek narzędzi 247
		7.2.4. Domykamy szkielet aplikacji 248
		7.2.5. Zanim rozpoczniemy pracę nad GUI edytora 251
	7.3. Kontener wxSplitterWindow 251
		7.3.1. Wstawiamy kontener do programu 253
		7.3.2. Wstawiamy kontener prawej kolumny 255
		7.3.3. Pozostałe ważniejsze metody klasy wxSplitterWindow, o których warto wiedzieć 255
		7.3.4. Obsługa zdarzeń kontenera wxSplitterWindow 257
		7.3.5. Edytor C++ – przygotowanie sizerów obszarów GUI 258
		7.3.6. Multi Document Interface (MDI) i wxAUI, czyli inne podejście do organizacji GUI 258
	7.4. Drzewo projektu, czyli klasa wxTreeCtrl 259
		7.4.1. Jak działa drzewo wxTreeCtrl? 260
		7.4.2. Trochę teorii o drzewach wxTreeCtrl 260
		7.4.3. Obsługa zdarzeń klasy wxTreeCtrl 262
		7.4.4. Ikony drzewa i lista wxImageList 262
		7.4.5. Operacje drzewa wxTreeCtrl 265
			7.4.5.1. Dodawanie, wstawianie i usuwanie elementów drzewa 265
			7.4.5.2. Modyfikowanie widoku drzewa 267
			7.4.5.3. Zarządzanie drzewem i jego elementami 268
		7.4.6. Tworzymy drzewo plików projektu edytora C++ 279
			7.4.6.1. Przygotowanie struktury danych plików projektu C++ 279
			7.4.6.2. A co z plikami spoza projektu? 281
			7.4.6.3. Klasa drzewa projektu, czyli ProjectTreeCtrl 282
			7.4.6.4. Wyszukiwanie plików projektu w drzewie 283
			7.4.6.5. Wyszukiwanie innych elementów drzewa 285
			7.4.6.6. Wstawianie elementów do drzewa 286
			7.4.6.7. Inne przydatne metody 287
			7.4.6.8. Co dalej z drzewem projektu? 287
	7.5. Tworzymy plik projektu, czyli praca z biblioteką wxXML 288
		7.5.1. Błyskawiczne wprowadzenie do języka XML 288
		7.5.2. Struktura XML pliku projektu 289
		7.5.3. Poznajemy bibliotekę składową wxXML i jej klasy 291
			7.5.3.1. Klasa wxXmlDocument 291
			7.5.3.2. Klasa wxXmlNode i znaczniki XML 293
			7.5.3.3. Techniki definiowania znaczników XML z użyciem wxXmlNode 295
			7.5.3.4. Przegląd niektórych przydatnych metod klasy wxXmlNode 298
			7.5.3.5. Odczyt, przetwarzanie i zapis pliku XML 299
			7.5.3.6. Usprawniamy pracę, czyli własna klasa dokumentu XML 305
		7.5.4. Realizacja pliku projektu i jego obsługi w edytorze C++ 310
			7.5.4.1. Okno wyjścia konsoli 310
			7.5.4.2. Drzewo i jego ikony 311
			7.5.4.3. Tworzenie nowego pliku projektu 312
			7.5.4.4. Otwieranie istniejącego pliku projektu 319
			7.5.4.5. Dodawanie plików do projektu 324
			7.5.4.6. Zmiana nazwy pliku w projekcie 329
			7.5.4.7. Usuwanie plików z projektu 331
			7.5.4.8. A co z pozostałymi operacjami na plikach? 332
			7.5.4.9. Temat nadobowiązkowy – menu kontekstowe dla plików w drzewie projektu 333
	7.6. wxBookCtrlBase i klasy kontenerów pochodnych 334
		7.6.1. Klasa wxBookCtrlBase 334
		7.6.2. Klasa zdarzeń wxBookCtrlEvent 336
		7.6.3. Przegląd kontenerów opartych na klasie wxBookCtrlBase 337
			7.6.3.1. Klasa wxNotebook 337
			7.6.3.2. Klasa wxChoicebook 339
			7.6.3.3. Klasa wxListbook 340
			7.6.3.4. Pozostałe kontenery wxBookCtrl 341
			7.6.3.5. Sposoby korzystania z kontenerów wxBookCtrl 342
			7.6.3.6. Utrudnienia w korzystaniu z kontenerów wxBookCtrl wraz z elementami języka C++11 i nowszych 347
			7.6.3.7. Dodajemy kontener do edytora C++ 347
	7.7. Serce edytora, czyli klasa wxStyledTextCtrl 348
		7.7.1. Przygotowanie biblioteki wxSTC 349
		7.7.2. Tworzenie kontrolki edytora wxStyledTextCtrl i jej konfiguracja 349
			7.7.2.1. Podstawowy konstruktor klasy wxStyledTextCtrl 349
			7.7.2.2. Podstawowa konfiguracja kontrolki wxStyledTextCtrl 350
		7.7.3. Zdarzenia klasy wxStyledTextCtrl i ich obsługa 355
		7.7.4. Przegląd istotnych możliwości klasy wxStyledTextCtrl 358
			7.7.4.1. Słowo o metodach reimplementowanych z wxTextEntry i innych metodach związanych z edycją 358
			7.7.4.2. Składanie kodu (code folding) 361
			7.7.4.3. Autouzupełnianie kodu (code autocompletion) 367
			7.7.4.4. Notatki i komunikaty w kodzie 373
			7.7.4.5. Podświetlanie pasujących nawiasów 378
		7.7.5. Wnioski 381
	7.8. Ten moment, gdy serce zaczyna bić… 381
		7.8.1. Otwieranie plików w edytorze 382
			7.8.1.1. Przygotowania 382
			7.8.1.2. Funkcja obsługująca składanie kodu 386
			7.8.1.3. Funkcja otwierająca dokumenty w nowych oknach edytora 386
			7.8.1.4. Wyświetlanie pliku dodawanego do projektu 387
			7.8.1.5. Wyświetlanie pliku aktywowanego w drzewie projektu 388
			7.8.1.6. Wyświetlanie pliku spoza projektu 390
		7.8.2. Działania związane z edycją plików 390
			7.8.2.1. Wykrywanie edycji i zmiana ikony pliku 390
			7.8.2.2. Metody edycyjne 391
		7.8.3. Wyszukiwanie i zamiana ciągów znaków 392
			7.8.3.1. Wyświetlenie okna dialogowego wyszukiwania i zamiany ciągów znaków 393
			7.8.3.2. Metoda wyszukująca 394
			7.8.3.3. Realizacja wyszukiwania ciągów znaków 396
			7.8.3.4. Realizacja zamiany ciągów znaków 398
			7.8.3.5. Właściwe zamykanie okna dialogowego zamiany 399
		7.8.4. Zapis i zamykanie dokumentów 400
			7.8.4.1. Ogólne metody zapisujące 400
			7.8.4.2. Zapis na życzenie użytkownika 402
			7.8.4.3. Zamykanie plików aktywnego projektu 403
			7.8.4.4. Zamykanie aplikacji a kontrola niezapisanych plików 404
		7.8.5. Ostatnie uzupełnienia 404
		7.8.6. Wnioski 405
	7.9. Zgłębiamy tajemnice listy wxListCtrl 406
		7.9.1. Tworzenie listy wxListCtrl i tryby jej pracy 407
			7.9.1.1. Pozostałe style klasy wxListCtrl 408
			7.9.1.2. Ikony listy 408
			7.9.1.3. Elementy listy, czyli klasa wxListItem 409
		7.9.2. Obsługa zdarzeń klasy wxListCtrl 411
		7.9.3. Ważniejsze metody klasy wxListCtrl 412
			7.9.3.1. Zarządzanie elementami listy 412
			7.9.3.2. Dane powiązane z elementem listy 414
			7.9.3.3. Korzystanie z przełączników typu checkbox w obrębie listy 415
			7.9.3.4. Praca z listą w trybie szczegółowym 416
			7.9.3.5. Testowanie elementów listy (na przykładzie listy szczegółowej) 419
			7.9.3.6. Szersze spojrzenie na atrybuty elementów listy wxListCtrl i klasa wxListItemAttr 420
		7.9.4. Zaawansowane zabawy z listą wxListCtrl 420
			7.9.4.1. Przemieszczanie wierszy listy w trybie szczegółowym 421
			7.9.4.2. Sortowanie listy wxListCtrl 425
			7.9.4.3. wxListCtrl jako lista rozwijana kontrolek typu ‘combobox’ 432
		7.9.5. Inne klasy list dostępnych w wxWidgets 436
		7.9.6. Tworzymy listę statystyk plików programu wxC++ 440
			7.9.6.1. Tworzenie listy statystyki 441
			7.9.6.2. Aktualizacja danych listy statystyk 441
	7.10. Przełącznik wxCheckBox 443
		7.10.1. Tworzenie i tryby pracy przełączników wxCheckBox 444
			7.10.1.1. Style i obsługa zdarzeń klasy wxCheckBox 444
			7.10.1.2. Ważniejsze metody klasy wxCheckBox 444
		7.10.2. Korzystanie z przełącznika wxCheckBox (na przykładzie aplikacji wxC++) 445
	7.11. Szybkie wprowadzenie do drukowania w wxWidgets 446
		7.11.1. Klasa wxHtmlEasyPrinting i inicjowanie środowiska drukowania 447
		7.11.2. Konfiguracja wydruku 448
		7.11.3. Przygotowanie tekstu do drukowania 449
		7.11.4. Wydruk, podgląd wydruku oraz ustawienia strony 450
		7.11.5. Littera scripta manet 452
	7.12. Pozostałe uzupełnienia i funkcje programu wxC++ 452
		7.12.1. Implementacja trybu pełnoekranowego 452
		7.12.2. Prosty kreator klas C++ 453
	7.13. Aplikacja wxC++ – zakończenie 454
		7.13.1. Propozycje udoskonaleń programu 455
8. Level completed, czyli co jeszcze w trawie piszczy? 459
Część III Potęga dialogu 463
9. Standardowe okna i funkcje dialogowe oraz inne techniki interakcji z użytkownikiem 465
	9.1. Okna dialogowe związane z pobieraniem danych od użytkownika 466
		9.1.1. Pobieranie tekstu 467
			9.1.1.1. Pobieranie zwykłego tekstu 467
			9.1.1.2. Pobieranie hasła (tekstu ukrytego) 468
			9.1.1.3. Ograniczenia funkcji wxGetTextFromUser() i wxGetPasswordFromUser 468
			9.1.1.4. Klasa wxTextEntryDialog 468
			9.1.1.5. Klasa wxPasswordEntryDialog 470
		9.1.2. Pobieranie wartości numerycznych 470
	9.2. Okna dialogowe związane z pobieraniem wyborów użytkownika 471
		9.2.1. Wybór kroju czcionki 471
			9.2.1.1. Klasa wxFontDialog 473
		9.2.2. Wybór znaku 474
		9.2.3. Wybór koloru 476
			9.2.3.1. Klasa wxColourDialog 477
		9.2.4. Wybór jednej lub wielu opcji 478
			9.2.4.1. Funkcje dialogowe wyboru pojedynczego 478
			9.2.4.2. Sprytne funkcje wyboru pojedynczego 481
			9.2.4.3. Klasa wxSingleChoiceDialog 482
			9.2.4.4. Funkcje dialogowe wyboru wielokrotnego 484
			9.2.4.5. Klasa wxMultiChoiceDialog 485
		9.2.5. Definiowanie szyku danych 486
			9.2.5.1. Klasa wxRearrangeDialog 486
			9.2.5.2. Klasach wxRearrangeCtrl i wxRearrangeList 488
	9.3. Okna dialogowe systemu plików 488
		9.3.1. Okna dialogowe do pracy z katalogami 489
			9.3.1.1. Klasa wxDirDialog 489
		9.3.2. Okna dialogowe do pracy z plikami 490
			9.3.2.1. Tryby pracy dialogów plikowych 490
			9.3.2.2. Funkcje dialogowe do pracy z plikami 491
			9.3.2.3. Klasa wxFileDialog 494
	9.4. Informacyjne okna dialogowe 498
		9.4.1. Podstawowe okna informacyjne 498
			9.4.1.1. Klasa wxMessageDialog 498
			9.4.1.2. Funkcja wxMessageBox() 502
			9.4.1.3. Funkcja wxInfoMessageBox() 502
		9.4.2. Paski komunikatów 503
		9.4.3. Okna informacji o programie 505
			9.4.3.1. Funkcja wxAboutBox() i klasa wxAboutDialogInfo 505
		9.4.4. Okno komunikatów diagnostycznych, czyli klasa wxLogGui 507
		9.4.5. Okna dialogowe i techniki wizualizacji postępu 509
			9.4.5.1. Klasy wxGenericProgressDialog i wxProgressDialog 509
			9.4.5.2. Klasa wxAppProgressIndicator 512
		9.4.6. Okna dialogowe i techniki wizualizowania zajętości 513
			9.4.6.1. Wizualizacja zajętości przez wygląd kursora 513
			9.4.6.2. Klasa wxBusyInfo 514
		9.4.7. Powiadomienia 516
			9.4.7.1. Klasa wxNotificationMessage 516
			9.4.7.2. Metoda wxTopLevelWindow::RequestUserAttention() 519
		9.4.8. Okna dialogowe związane z systemem pomocy i wsparciem 520
			9.4.8.1. Porada dnia 520
			9.4.8.2. Rozszerzone podpowiedzi 522
			9.4.8.3. Okno dialogowe pomocy HTML 523
	9.5. Pozostałe okna dialogowe 527
		9.5.1. Arkusze właściwości 527
		9.5.2. Okno dialogowe wyszukiwania i zamiany ciągu znaków 530
		9.5.3. Okno dialogowe konfiguracji drukowania 531
		9.5.4. Kreator wxWizard 533
	9.6. Kontrolki pochodne od wxPickerBase 538
		9.6.1. Klasa wxColourPickerCtrl 538
		9.6.2. Klasa wxFontPickerCtrl 540
		9.6.3. Klasy wxDirPickerCtrl i wxFilePickerCtrl 541
		9.6.4. Przegląd ważniejszych wspólnych metod klas dziedziczących z wxPickerBase 544
	9.7. Podsumowanie i słowo o dialogowych kontrolkach GUI 544
10. Walidacja danych wejściowych 545
	10.1. Aplikacja przykładowa i funkcja testująca 545
	10.2. Pasywne testy danych wejściowych 546
		10.2.1. Kontrola pasywna danych wejściowych kontrolki GUI 547
		10.2.2. Kontrola pasywna danych wejściowych w oknach dialogowych 547
	10.3. Aktywne testy danych wejściowych 548
		10.3.1. Kontrola aktywna danych wejściowych kontrolki GUI 548
		10.3.2. Kontrola aktywna danych wejściowych w oknach dialogowych 549
	10.4. Praca z walidatorami wxWidgets 551
		10.4.1. Klasa wxValidator 552
		10.4.2. Walidator tekstowy wxTextValidator 553
		10.4.3. Walidatory numeryczne wxIntegerValidator oraz wxFloatingPointValidator 555
		10.4.4. Walidator generyczny wxGenericValidator 557
		10.4.5. Walidacja wyrażeń regularnych 558
		10.4.6. Własny walidator uniwersalny 563
		10.4.7. Nieco więcej o transferze danych 568
	10.5. Podsumowanie rozdziału, czyli jakiej metody walidacji użyć? 568
11. Aplikacja Bibliotekarz i realizacja własnych okien dialogowych 570
	11.1. Klasa wxDialog i jej cechy 570
		11.1.1. Tworzenie własnych klas okien dialogowych opartych na klasie wxDialog 571
		11.1.2. Zdarzenia okna dialogowego wxDialog 572
		11.1.3. Sposoby wyświetlania okien dialogowych wxDialog 572
			11.1.3.1. C++11 i nowe możliwości wyświetlania okien dialogowych 574
			11.1.3.2. Pozostałe metody związane z wyświetlaniem okna dialogowego 574
		11.1.4. Metody ułatwiające tworzenie GUI okien dialogowych opartych na klasie wxDialog 575
			11.1.4.1. Tworzenie obszaru przycisków 575
			11.1.4.2. Usprawnianie tworzenia pozostałych obszarów GUI 576
		11.1.5. Adaptacja dużych obszarów zawartości 576
		11.1.6. Pozostałe ważniejsze metody klasy wxDialog 579
	11.2. Przygotowanie aplikacji Bibliotekarz 579
		11.2.1. Główne założenia i przygotowanie do pracy nad programem 579
			11.2.1.1. Przygotowanie trzonu aplikacji 580
			11.2.1.2. Implementacja prostego systemu przechowywania konfiguracji programu 582
		11.2.2. Klasa biblioteki 586
			11.2.2.1. Dodanie biblioteki do programu 594
	11.3. Piszemy pierwsze okno dialogowe 595
		11.3.1. Zanim zaczniemy 596
			11.3.1.1. Horyzontalny sizer z etykietą 596
		11.3.2. Tworzymy klasę własnego okna dialogowego 597
		11.3.3. Piszemy konstruktor klasy BookDialog 599
		11.3.4. Pozostałe metody klasy BookDialog 604
		11.3.5. Korzystanie z okna dialogowego w programie 606
			11.3.5.1. Usuwanie książki z biblioteki 608
		11.3.6. Wnioski 609
	11.4. Współdziałanie własnych okien dialogowych z własnymi walidatorami 609
		11.4.1. Klasa LendBookDialog 609
		11.4.2. Implementacja wypożyczania i oddawania książki 611
	11.5. Okna dialogowe oparte na klasie wxFrame 612
		11.5.1. Klasa MailConfigDialog 612
		11.5.2. Implementacja mechanizmu modalnego wyświetlania okna 615
		11.5.3. Obsługa standardowych przycisków 617
		11.5.4. Zastosowanie klasy MailConfigDialog w programie 618
		11.5.5. Wnioski 619
	11.6. Ostatnie podejście do pisania własnych okien dialogowych i zmiana zwracanego kodu 619
		11.6.1. Klasa SMTPConfigDialog 619
		11.6.2. Włączenie okna konfiguracji SMTP do aplikacji 622
	11.7. Kończymy aplikację Bibliotekarz 622
		11.7.1. Wybór między wxSocketBase, wxEMail a biblioteką POCO 622
		11.7.2. Pobieranie i kompilacja biblioteki POCO 623
			11.7.2.1. Kompilacja biblioteki POCO w MS Windows 623
			11.7.2.2. Kompilacja i instalacja biblioteki POCO w Linux 625
			11.7.2.3. Wersja binarna bibliotek dla MS Windows 625
		11.7.3. Dodanie biblioteki POCO do projektu 625
			11.7.3.1. MS Windows (Visual Studio) 625
			11.7.3.2. Linux (Code::Blocks) 626
			11.7.3.3. Pliki nagłówkowe 627
		11.7.4. Wysyłanie wiadomości e-mail za pomocą biblioteki POCO 627
	11.8. Podsumowanie i propozycje udoskonalenia aplikacji 631
Część IV Zaawansowane programowanie wxWidgets 633
12. Tajemnice pracy z ciągami znaków w wxWidgets, czyli klasa wxString i nie tylko... 635
	12.1. Klasa wxString i jej stosowanie 635
		12.1.1. Tworzenie obiektów wxString 636
		12.1.2. Konkatenacja ciągów wxString 638
			12.1.2.1. Operatory konkatenacji 638
			12.1.2.2. Funkcje wstawiające 638
		12.1.3. Dostęp do elementów łańcucha wxString 639
			12.1.3.1. Metody dostępu 639
			12.1.3.2. Dostęp przez iteratory 639
		12.1.4. Konwersja wxString do innych typów i odwrotnie 640
			12.1.4.1. Konwersje między wxString a standardowymi typami tekstowymi oraz literałami łańcuchowymi 640
			12.1.4.2. Kodowanie znaków w konwersji ciągów znaków 642
			12.1.4.3. Konwersje między wxString a typami liczbowymi 644
		12.1.5. Testowanie ciągów wxString 646
		12.1.6. Przetwarzanie i edycja ciągów wxString 647
			12.1.6.1. Wyszukiwanie, zwracanie oraz zamiana ciągów znaków oraz ich fragmentów 647
			12.1.6.2. Zmiana wielkości znaków 649
			12.1.6.3. Usuwanie ciągu znaków i jego części 649
			12.1.6.4. Dzielenie ciągów wxString 650
		12.1.7. wxString i łańcuchy formatowane 652
			12.1.7.1. Formatowane inicjowanie obiektu wxString 652
			12.1.7.2. Formatowane wyjście wxString 652
			12.1.7.3. Ciągi wxString w standardowych funkcjach formatujących 653
		12.1.8. Makra wxT(), _T(), wxT_2(), wxS() oraz _() 653
		12.1.9. wxString i metody STL 653
	12.2. Wyrażenia regularne, czyli klasa wxRegEx 654
		12.2.1. Testowanie łańcuchów znaków 655
		12.2.2. Zmiana ciągów znaków za pomocą wyrażenia regularnego 655
	12.3. Gromadzenie ciągów znaków, czyli klasa wxArrayString 656
		12.3.1. Tworzenie tablic ciągów znaków i zarządzanie ich elementami 656
		12.3.2. Tablice wxArrayString a STL 657
		12.3.3. Testowanie tablic wxArrayString 658
		12.3.4. Tablice wxArrayString a zarządzanie pamięcią 658
		12.3.5. Sortowanie tablic wxArrayString 659
	12.4. Klasa wxSortedArrayString 660
	12.5. Podsumowanie 661
13. Data i czas w wxWidgets 662
	13.1. Klasa wxDateTime i jej stosowanie 662
		13.1.1. Tworzenie i inicjowanie obiektów wxDateTime 662
		13.1.2. Dostęp do danych daty i czasu 665
		13.1.3. Porównywanie wartości dat i czasu 666
		13.1.4. Arytmetyka dat i czasu, czyli klasy wxDateSpan oraz wxTimeSpan 668
			13.1.4.1. Klasa wxDateSpan i jej właściwości 668
			13.1.4.2. Klasa wxTimeSpan i jej właściwości 670
			13.1.4.3. Wykonywanie działań na obiektach wxDateTime 673
		13.1.5. Parsowanie i formatowanie daty i czasu 677
			13.1.5.1. Formatowanie obiektów daty i czasu do łańcuchów znaków 677
			13.1.5.2. Własne formatowanie daty i czasu 678
			13.1.5.3. Wyświetlanie tekstowych informacji o okresach 686
			13.1.5.4. Parsowanie łańcuchów znaków do obiektów daty i czasu 688
		13.1.6. Strefy czasowe i tzw. czas letni 690
		13.1.7. Pozostałe przydatne metody wxDateTime 692
			13.1.7.1. Aktualny czas i aktualna data 692
			13.1.7.2. Funkcje kalendarzowe 693
	13.2. Pobieranie daty i czasu od użytkownika 693
		13.2.1. Prezentacja klas wxCalendarCtrl oraz wxGenericCalendarCtrl 693
			13.2.1.1. Zdarzenia klas wxCalendarCtrl oraz wxGenericCalendarCtrl i ich obsługa 695
			13.2.1.2. Modyfikacja wyglądu kalendarza generycznego 695
			13.2.1.3. Święta i ich definiowanie 695
			13.2.1.4. Atrybuty dat kalendarza generycznego 696
			13.2.1.5. Inne przydatne metody klas wxCalendarCtrl i wxGenericCalendarCtrl 697
			13.2.1.6. Którą kontrolkę kalendarza wybrać? 698
			13.2.1.7. Przykład zastosowania i porównanie kontrolek wxCalendarCtrl i wxGenericCalendarCtrl w praktyce 698
		13.2.2. Prezentacja klasy wxDatePickerCtrl 700
			13.2.2.1. Przykład stosowania kontrolek wxDatePickerCtrl 701
		13.2.3. Prezentacja klasy wxTimePickerCtrl 701
			13.2.3.1. Przykład stosowania kontrolek wxTimePickerCtrl 702
	13.3. Podsumowanie 703
14. Krótka opowieść o przydatnych szablonach i pseudoszablonach wxWidgets 704
	14.1. Klasy pojemnikowe 704
		14.1.1. Kontener podstawowy, czyli klasa wxVector 704
		14.1.2. Stos, czyli klasa wxStack 705
		14.1.3. Lista łączona, czyli klasy wxList i wxNode 706
		14.1.4. Kontener asocjacyjny wxHashMap 709
		14.1.5. Tablice wxWidgets, czyli klasa wxArray i jej odmiany 711
	14.2. Sprytne wskaźniki 714
		14.2.1. wxSharedPtr 714
		14.2.2. wxScopedPtr 715
		14.2.3. Klasa wxScopedTiedPtr 716
		14.2.4. wxScopedArray 716
		14.2.5. wxObjectDataPtr 717
		14.2.6. wxWindowPtr 717
		14.2.7. wxWeakRef< T > i wxWeakRefDynamic< T > 717
	14.3. Niektóre przydatne funkcje szablonowe 718
	14.4. Podsumowanie 718
15. Praca z plikami i systemem plików w wxWidgets 719
	15.1. Niektóre funkcje zarządzania plikami i systemem plików 719
		15.1.1. Funkcje zarządzania katalogami 720
		15.1.2. Funkcje zarządzania plikami 721
		15.1.3. Inne funkcje systemu plików 724
	15.2. Specjalistka od katalogów, czyli klasa wxDir 725
		15.2.1. Tworzenie i inicjowanie obiektów wxDir 725
		15.2.2. Testowanie katalogów za pomocą wxDir 725
		15.2.3. Pobieranie informacji o danej lokalizacji 726
		15.2.4. Techniki listowania plików i katalogów z wxDir 726
			15.2.4.1. Listowanie plików i katalogów w pętli 727
			15.2.4.2. Listowanie plików i katalogów przy wsparciu klasy wxDirTraverser 727
			15.2.4.3. Listowanie plików i katalogów za pomocą metody GetAllFiles() 729
		15.2.5. Inne przydatne metody wxDir 729
	15.3. Klasy wxFile oraz wxFFile i podstawowa obsługa plików 730
		15.3.1. Niskopoziomowa obsługa plików, czyli klasa wxFile 730
			15.3.1.1. Tworzenie plików wxFile i zapis danych do pliku 730
			15.3.1.2. Odczyt danych z pliku 732
			15.3.1.3. Deskryptor pliku i pozostałe zagadnienia 733
		15.3.2. Wysokopoziomowa obsługa plików, czyli klasa wxFFile 734
			15.3.2.1. Tworzenie plików wxFFile i zapis danych do pliku 734
			15.3.2.2. Odczyt danych z pliku 735
			15.3.2.3. Pozostałe informacje o wxFFile 736
	15.4. Więcej narzędzi, czyli klasa wxFileName 736
		15.4.1. Tworzenie i inicjowanie obiektów wxFileName 736
		15.4.2. Analiza ścieżki, nazwy i rozszerzenia pliku 737
		15.4.3. Edycja ścieżki, nazwy i rozszerzenia pliku 740
		15.4.4. Ścieżki względne i absolutne 742
		15.4.5. Normalizacja ścieżek (skróty, zmienne środowiskowe i inne) 743
		15.4.6. Odczyt i edycja czasów pliku 744
		15.4.7. Prawa dostępu do pliku lub katalogu 745
		15.4.8. Badanie i wyświetlanie rozmiaru pliku 746
		15.4.9. Tworzenie i obsługa plików tymczasowych z wxFileName 747
		15.4.10. Niektóre pozostałe testy obiektów wxFileName 749
		15.4.11. Proste operacje na systemie plików 749
	15.5. Wirtualne systemy plików wxWidgets 750
	15.6. Praca z archiwami 752
		15.6.1. wxArchiveFSHandler i odczyt danych z archiwów 753
			15.6.1.1. Listowanie zawartości wybranego archiwum 753
			15.6.1.2. Wyświetlanie zawartości pliku w archiwum 753
			15.6.1.3. Rozpakowanie wybranego archiwum do wskazanej lokalizacji 754
		15.6.2. Prezentacja zaawansowanej obsługi archiwów 755
			15.6.2.1. Tworzenie archiwum 756
			15.6.2.2. Rozpakowywanie archiwów 758
			15.6.2.3. Pozostałe operacje i możliwości pracy z archiwami 759
	15.7. Monitorowanie zmian w systemie plików 760
	15.8. Pliki tekstowe wxTextFile 762
		15.8.1. Analiza pliku 763
		15.8.2. Tworzenie i edycja pliku 763
		15.8.3. Odczyt danych pliku 764
	15.9. Pliki tymczasowe wxTempFile 765
	15.10. Ścieżki systemowe, czyli klasa wxStandardPaths 766
		15.10.1. Niektóre przydatne metody wxStandardPaths zależne od platformy 767
			15.10.1.1. Metody dedykowane MS Windows 767
			15.10.1.2. Metody dedykowane Linuksowi 768
	15.11. Podsumowanie 768
16. Krótki przegląd niektórych zaawansowanych kontrolek GUI 769
	16.1. Prezentacja wxRichTextCtrl 769
		16.1.1. Tworzenie i wstępna konfiguracja obiektów wxRichTextCtrl 770
			16.1.1.1. Tworzenie obiektu edytora 770
			16.1.1.2. Definiowanie arkusza stylów 772
			16.1.1.3. Przygotowanie silnika drukowania i włączenie edytora 774
		16.1.2. Zarządzanie stylami 774
			16.1.2.1. Okno dialogowe wxRichTextStyleOrganiserDialog 774
			16.1.2.2. Kontrolki wyboru stylów 775
		16.1.3. Podstawowe metody edycji tekstu 776
			16.1.3.1. Podstawowe formatowanie tekstu 776
			16.1.3.2. Podstawowe metody formatujące 776
			16.1.3.3. Aktualizacja elementów GUI w zależności od formatowania w pozycji kursora 777
		16.1.4. Rozszerzone formatowanie tekstu 779
			16.1.4.1. Badanie zakresu zaznaczenia tekstu oraz położenia kursora 779
			16.1.4.2. Przykład implementacji efektu znakowego: indeks górny i dolny 779
			16.1.4.3. Przykład implementacji efektu akapitu – zmienna interlinia 781
		16.1.5. Szybka zmiana kroju czcionki (i nie tylko) 781
		16.1.6. Listy 782
			16.1.6.1. Lista numerowana 783
			16.1.6.2. Lista wypunktowana 784
			16.1.6.3. Niektóre operacje na listach 785
		16.1.7. Wstawianie nowych elementów do tekstu 786
			16.1.7.1. Wstawianie znaków specjalnych 786
			16.1.7.2. Wstawianie URL 787
			16.1.7.3. Wstawianie grafiki z pliku 787
			16.1.7.4. Wstawianie tabel 788
		16.1.8. Drukowanie z kontrolką wxRichTextCtrl 790
			16.1.8.1. Podstawowe metody obsługi drukowania 790
			16.1.8.2. Nagłówek i stopka 790
		16.1.9. Operacje plikowe 794
			16.1.9.1. Rozpoznanie formatu pliku 794
			16.1.9.2. Otwieranie dokumentów 794
			16.1.9.3. Zapisywanie dokumentów 795
		16.1.10. Wnioski 795
	16.2. Prezentacja wxRibbonBar 796
		16.2.1. Struktura paska wxRibbonBar 797
		16.2.2. Tworzenie i inicjowanie paska wxRibbonBar 797
			16.2.2.1. Metoda Realize() 798
		16.2.3. Dodawanie stron do paska wxRibbonBar 798
		16.2.4. Dodawanie paneli wxRibbonPanel do stron paska narzędziowego 798
		16.2.5. Klasa wxRibbonButtonBar, czyli pasek przycisków 799
			16.2.5.1. Rodzaje przycisków paska wxRibbonBar 799
			16.2.5.2. Dodawanie paska wxRibbonButtonBar do panelu 800
			16.2.5.3. Dodawanie przycisków do wxRibbonButtonBar i ich obsługa 800
			16.2.5.4. Skalowanie paneli i jego wpływ na wyświetlanie przycisków 802
		16.2.6. Pasek narzędzi wxRibbonToolBar 803
			16.2.6.1. Realizacja paska narzędzi wxRibbonToolBar 803
			16.2.6.2. Obsługa przycisków paska narzędzi wxRibbonToolBar 804
		16.2.7. Galeria danych wxRibbonGallery 804
			16.2.7.1. Tworzenie galerii 804
			16.2.7.2. Zapełnianie galerii danymi 805
			16.2.7.3. Obsługa galerii wxRibbonGallery 807
		16.2.8. Dowolne kontrolki GUI w pasku wxRibbonBar 808
		16.2.9. Obsługa przycisku pomocy 808
		16.2.10. Zmiana wyglądu paska wxRibbonBar 808
		16.2.11. Wnioski i jeszcze więcej opcji... 809
	16.3. Prezentacja wxPropertyGrid i wxPropertyGridManager 810
		16.3.1. Tworzenie menedżera właściwości 811
		16.3.2. Hierarchia siatki i rodzaje właściwości 812
		16.3.3. Wskaźnik i nazwa, czyli różne sposoby identyfikacji właściwości 813
		16.3.4. Realizacja przykładowego menedżera 814
		16.3.5. Pobieranie wartości poszczególnych pól siatki 818
		16.3.6. Obsługa zdarzeń i rozpoznawanie modyfikowanych właściwości 819
		16.3.7. Wnioski 820
		16.4. Inne kontrolki zaawansowane 820
		16.4.1. Klasa wxGrid 820
		16.4.2. Klasa wxWebView 821
		16.4.3. Klasa wxMediaCtrl 823
	16.5. Podsumowanie 824
17. Tworzenie własnych generycznych kontrolek GUI 825
	17.1. Główne zasady tworzenia własnych kontrolek generycznych 825
		17.1.1. Program przykładowy 826
	17.2. Skalowany panel z obrazkowym tłem 827
		17.2.1. Piszemy klasę panelu 828
		17.2.2. Piszemy klasę zdarzenia panelu 829
		17.2.3. Metody podstawowe, czyli konstruktor, destruktor, Init() i Create() 830
		17.2.4. Metoda rysująca kontrolkę 831
		17.2.5. Metody inicjujące rysowanie 832
		17.2.6. Pozostałe metody 832
		17.2.7. Użycie skalowanego panelu graficznego w kodzie programu 833
	17.3. Implementacja przycisku graficznego 834
		17.3.1. Koncepcja i realizacja klasy przycisku graficznego 834
		17.3.2. Piszemy klasę zdarzeń przycisku 835
		17.3.3. Podstawowe funkcje klasy przycisku 836
		17.3.4. Metody związane z rysowaniem przycisku 838
		17.3.5. Metody obsługi i emisji zdarzeń 839
		17.3.6. Użycie przycisku graficznego w aplikacji 840
			17.3.6.1. Obsługa zdarzeń przycisku 841
		17.3.7. Propozycje udoskonaleń kontrolki 842
	17.4. Implementacja graficznego paska postępu 842
		17.4.1. Koncepcja kontrolki i opracowanie klasy 842
		17.4.2. Konstruktor, destruktor oraz funkcje tworzące i inicjujące pasek 844
		17.4.3. Funkcje inicjujące rysowanie kontrolki 845
		17.4.4. Funkcja rysująca pasek 846
		17.4.5. Stosowanie graficznego paska postępu w aplikacji 848
		17.4.6. Propozycje udoskonalenia paska graficznego 849
	17.5. Implementacja prostego kalendarza 849
		17.5.1. Koncepcja i klasa kalendarza, a także klasy pomocnicze 849
			17.5.1.1. Klasa imienin 849
			17.5.1.2. Klasa dnia miesiąca 851
			17.5.1.3. Okno dialogowe pobierania daty 852
			17.5.1.4. Klasa kalendarza 852
		17.5.2. Klasa zdarzenia kalendarza 854
		17.5.3. Obliczanie danych miesiąca 855
		17.5.4. Obliczanie współrzędnych siatki kalendarza 856
		17.5.5. Metoda Init() 857
		17.5.6. Konstruktor, Create() oraz destruktor 858
			17.5.6.1. Metody związane z rysowaniem kalendarza 859
			17.5.6.2. Metody inicjujące rysowanie 859
			17.5.6.3. Metoda rysująca siatkę kalendarza 859
			17.5.6.4. Metoda rysująca dane poszczególnych dni w miesiącu 860
		17.5.7. Zmiana daty bieżącej 862
		17.5.8. Zdarzenia wewnętrzne i emitowane kalendarza 862
		17.5.9. Metody obsługi zdarzeń menu kontekstowego 864
		17.5.10. Stosowanie klasy MyCalendar w kodzie programu 865
		17.5.11. Propozycje udoskonalenia kalendarza 866
		17.5.12. Tworzenie kontrolek natywnych 866
	17.6. Podsumowanie 867
18. Techniki i modele realizacji GUI aplikacji 868
	18.1. Sizery wxWidgets 868
		18.1.1. Klasa wxSizer i ogólne aspekty pracy z sizerami 869
			18.1.1.1. Określanie atrybutów elementów sizera 869
			18.1.1.2. Zarządzanie elementami w obrębie sizera 870
			18.1.1.3. Pobieranie wskaźników elementów przypisanych do sizera 872
			18.1.1.4. Wyświetlanie i ukrywanie elementów 872
			18.1.1.5. Pobieranie i dostosowanie rozmiaru oraz pozycji sizera i jego elementów 873
			18.1.1.6. Pozostałe wspólne metody sizerów, dziedziczone z wxSizer 874
		18.1.2. Sizery liniowe i ich stosowanie 874
			18.1.2.1. Klasa wxBoxSizer 875
			18.1.2.2. Klasa wxStaticBoxSizer 876
			18.1.2.3. Klasa wxStdDialogButtonSizer 876
			18.1.2.4. Klasa wxWrapSizer 877
		18.1.3. Sizery tablicowe i ich stosowanie 877
			18.1.3.1. Klasa wxGridSizer 877
			18.1.3.2. Klasa wxFlexGridSizer 879
			18.1.3.3. Klasa wxGridBagSizer 881
		18.1.4. Wnioski 882
	18.2. Multi Document Interface (MDI) 882
		18.2.1. Ogólne zasady tworzenia interfejsu MDI 883
		18.2.2. Automatyczne menu nawigacyjne i menu okien podrzędnych 884
		18.2.3. Poznajemy bliżej klasę wxMDIParentFrame 885
		18.2.4. MDI a model dokument/widok (wxDocument/wxView) 885
			18.2.4.1. Model dokument/widok w wxWidgets 886
			18.2.4.2. Klasy MDI dedykowane modelowi dokument/widok 886
			18.2.4.3. Program przykładowy i koncepcja formatu danych 886
			18.2.4.4. Klasa menedżera dokumentów 887
			18.2.4.5. Klasy dokumentu oraz danych 887
			18.2.4.6. Klasy widoku oraz płótna 889
			18.2.4.7. Wyświetlenie ramek MDI w modelu dokument/widok w programie 891
		18.2.5. Wnioski 893
	18.3. Tworzenie GUI aplikacji przy użyciu wxAUI 893
		18.3.1. Przedstawienie elementów wxAUI 894
			18.3.1.1. Menedżer ramek wxAuiManager 894
			18.3.1.2. Właściwości ramek dokowanych i pływających, czyli klasa wxAuiPaneInfo 896
			18.3.1.3. Kontener wxAuiNotebook 899
			18.3.1.4. Paski narzędzi wxAuiToolBar 901
		18.3.2. Warstwy, wiersze i pozycje, czyli zrozumieć wxAUI 902
		18.3.3. wxAUI w praktyce 903
			18.3.3.1. Menedżer 903
			18.3.3.2. Ramka 1 – edytor (kontener wxAuiNotebook) 903
			18.3.3.3. Ramka 2 – okno konsoli (bezpośrednie dodanie kontrolki) 904
			18.3.3.4. Ramki 3 i 4 – dodanie nowej warstwy GUI 904
			18.3.3.5. Ramka 5 – kontener z sizerem 905
			18.3.3.6. Paski narzędzi 906
			18.3.3.7. Modyfikowanie wyglądu elementów dokowanych 907
			18.3.3.8. To chyba jeszcze nie wszystko! 907
		18.3.3.9. Co z tego wyszło? 907
		18.3.4. Wnioski 908
	18.4. Krótko o pozostałych technikach tworzenia GUI 909
		18.4.1. Single Document Interface (SDI) 909
		18.4.2. wxXRC i zasoby XML 909
	18.5. Słowo o niektórych narzędziach WYSIWYG dedykowanych pracy z wxWidgets 911
		18.5.1. wxFormBuilder 911
		18.5.2. wxSmith 912
		18.5.3. Czy używać narzędzi WYSIWYG? 913
	18.6. Podsumowanie 913
19. Drukowanie w wxWidgets od kuchni 914
	19.1. Ogólnie o klasie wxPrintout 914
		19.1.1. Tworzenie prostego silnika drukowania 915
		19.1.2. Kustomizacja własnego silnika drukowania 917
		19.1.3. Problemy skalowania wydruku 918
		19.1.4. Źródła danych i kilka silników drukowania w jednym programie 919
	19.2. Konfiguracja wydruku 920
		19.2.1. Klasa wxPrintData 920
		19.2.2. Klasa wxPrintDialogData 921
		19.2.3. Klasa wxPageSetupDialogData 921
	19.3. Klasy wxRichTextBuffer i wxRichTextPrinting oraz drukowanie formatowanego tekstu na skróty 922
	19.4. Podsumowanie 923
20. Krótki rozdział o technikach przechowywania konfiguracji programu 924
	20.1. Konfiguracja za pomocą klas pochodnych z wxConfigBase 924
		20.1.1. Ogólna koncepcja konfiguracji wxConfigBase 924
		20.1.2. Klasa wxConfigBase 925
			20.1.2.1. Zarządzanie wpisami konfiguracji 925
			20.1.2.2. Odczyt i zapis danych konfiguracyjnych 925
			20.1.2.3. Pozostałe ważniejsze metody wxConfigBase 926
		20.1.3. Plik konfiguracyjny wxFileConfig 926
			20.1.3.1. Struktura pliku konfiguracyjnego 927
			20.1.3.2. Plik konfiguracyjny w praktyce 928
		20.1.4. Konfiguracja w rejestrze systemu, czyli wxRegConfig (MS Windows) 929
			20.1.4.1. Konfiguracja wxRegConfig w praktyce 929
		20.1.5. Konfiguracja domyślna a platforma systemowa 930
	20.2. Zapamiętywanie stanów GUI za pomocą wxPersistanceManager 931
	20.3. Podsumowanie i refleksja na temat innych możliwości zapamiętywania konfiguracji programu 931
21. wxWidgets i programowanie współbieżne 933
	21.1. Aplikacja wielowątkowa i klasa wxThread 933
		21.1.1. Klasa wxThread 934
			21.1.1.1. Wybrane metody statyczne klasy wxThread 935
		21.1.2. Szkielet aplikacji wielowątkowej 935
		21.1.3. Tworzenie klasy wątku 937
	21.2. Poradnik dla hazardzistów, czyli zabezpieczanie aplikacji przed wyścigiem do danych 939
		21.2.1. Kontrola liczby wątków, czyli klasa wxSemaphore 939
			21.2.1.1. Semafor wxSemaphore w praktyce 940
		21.2.2. Blokowanie dostępu do zasobów, czyli co nieco o tzw. muteksach 941
			21.2.2.1. Korzystanie z wzajemnych wykluczeń w aplikacji 942
			21.2.2.2. Dostęp wątków do biblioteki GUI 942
		21.2.3. Sekcja krytyczna wxCriticalSection 943
	21.3. Wątki i ich zdarzenia 944
	21.4. Podsumowanie 946
22. wxWidgets i konsola 947
	22.1. Konsolowe aplikacje wxWidgets? 947
		22.1.1. Dostosowanie projektu i makefile 947
			22.1.1.1. MS Windows i Visual Studio 947
			22.1.1.2. Linux i makefile 948
		22.1.2. Szkielet aplikacji konsolowej wxWidgets 948
	22.2. Obsługa parametrów aplikacji z linii komend 949
		22.2.1. Tworzenie list parametrów 949
			22.2.1.1. Sposób 1 – definiowanie parametrów za pomocą metod klasy wxCmdLineParser 950
			22.2.1.2. Sposób 2 – lista parametrów w postaci tablicy wxCmdLineEntryDesc 952
			22.2.1.3. Parsowanie i przetwarzanie parametrów 953
			22.2.1.4. Odczyt i wykorzystanie parametrów w aplikacji 953
			22.2.1.5. Własny tekst w wiadomości pomocy 954
	22.3. Zarządzanie procesami z poziomu aplikacji (wx/utils.h) 955
	22.4. Strumień wyjściowy C++ w kontrolce tekstowej 956
	22.5. Sprawdzanie liczby instancji programu 957
	22.6. Podsumowanie 958
23. Co jest grane? O logach w wxWidgets 959
	23.1. Klasa wxLog i ogólne informacje o wyświetlaniu logów 959
		23.1.1. Ustawienia ogólne systemu logowania 959
		23.1.2. Poziomy logowania i odpowiadające im funkcje piszące 960
		23.1.3. Wybór komponentów logujących 961
	23.2. Wyjście logu i logowanie w praktyce 962
		23.2.1. Charakterystyka klas wyjścia logu 962
		23.2.2. Logowanie w praktyce 962
			23.2.2.1. Tworzenie obiektów klas wyjścia logu 963
			23.2.2.2. Zmiana wyjścia logu 963
			23.2.2.3. Sterowanie pracą wyjścia logu 964
	23.3. Własny format logu 964
	23.4. Podsumowanie 965
24. Nie tylko po polsku, czyli internacjonalizacja aplikacji 966
	24.1. Makro _() 966
	24.2. Tłumaczenia aplikacji 966
		24.2.1. Warsztat tłumacza, czyli oprogramowanie poEdit 967
		24.2.2. Przygotowanie tłumaczeń programu z narzędziem poEdit 967
		24.2.3. Samodzielne przygotowanie plików tłumaczeń 969
	24.3. Implementacja kilku języków w aplikacji 970
		24.3.1. Klasa wxLocale i elementy internacjonalizacji 971
			24.3.1.1. Konstruowanie i inicjowanie obiektów wxLocale 971
			24.3.1.2. Lokalizacja plików tłumaczeń 971
			24.3.1.3. Analizowanie danych wczytanego języka 972
			24.3.1.4. Ważniejsze statyczne metody klasy wxLocale 973
		24.3.2. Internacjonalizacja w praktyce, czyli prosty przykład wykorzystania wxLocale 973
	24.4. Regionalizacja aplikacji 975
	24.5. Podsumowanie 976
25. Programowanie sieciowe z wxWidgets 977
	25.1. Klasa wxSocketBase i komunikacja serwer/klient 977
		25.1.1. Klasa wxSocketBase 977
			25.1.1.1. Ważniejsze metody klasy wxSocketBase 978
			25.1.1.2. Zdarzenia wxSocketBase i ich obsługa 981
		25.1.2. Piszemy prosty serwer, czyli korzystanie z wxSocketServer 982
			25.1.2.1. Przygotowanie niektórych elementów aplikacji 982
			25.1.2.2. Tworzenie serwera 983
			25.1.2.3. Klasa wątku połączenia 984
			25.1.2.4. Tworzenie nowych wątków połączeń 987
		25.1.3. Piszemy prostego klienta, czyli korzystanie z wxSocketClient 988
			25.1.3.1. Przygotowanie i koncepcja aplikacji 988
			25.1.3.2. Tworzenie i usuwanie obiektu klienta 988
			25.1.3.3. Inicjowanie połączenia z serwerem 989
			25.1.3.4. Nawiązanie połączenia i obsługa zdarzeń gniazda 990
			25.1.3.5. Wysyłanie danych na serwer 991
			25.1.3.6. Rozłączanie klienta 991
		25.1.4. Testowanie komunikacji klient/serwer za pomocą wykonanych aplikacji 992
		25.1.5. Programowanie z protokołem UDP 992
	25.2. Klasa wxProtocol i obsługa podstawowych protokołów sieciowych 992
		25.2.1. Klasa protokołu wxProtocol 993
		25.2.2. Obsługa protokołu HTTP (wxHTTP) 993
			25.2.2.1. Ważniejsze metody klasy wxHTTP 994
			25.2.2.2. Prosty przykład – pobieranie źródła strony do bufora lokalnego 994
		25.2.3. Obsługa protokołu FTP w praktyce, czyli piszemy własnego klienta (wxFTP) 995
			25.2.3.1. Przygotowanie aplikacji 995
			25.2.3.2. Dodajemy obiekt wxFTP 997
			25.2.3.3. Piszemy funkcje narzędziowe 998
			25.2.3.4. Łączenie z serwerem FTP 999
			25.2.3.5. Zamykanie połączenia 1001
			25.2.3.6. Zmiana aktywnego katalogu FTP 1001
			25.2.3.7. Niektóre operacje na zdalnym systemie plików 1002
			25.2.3.8. Klasa wątku pobierania i pobieranie pliku z FTP 1003
			25.2.3.9. Klasa wątku wysyłania i wysyłanie plików na FTP 1005
			25.2.3.10. Testowanie klienta FTP 1007
	25.3. Podsumowanie 1007
26. wxWidgets i nowoczesny OpenGL 1008
	26.1. Klasa wxGLCanvas 1009
	26.2. Klasa wxGLContext 1011
	26.3. Inicjowanie obsługi nowoczesnego OpenGL w aplikacji wxWidgets 1012
	26.4. Przykładowy program i renderowanie sceny 1013
	26.5. Podsumowanie 1015
27. Zagadnienia programowania bazodanowego z wxWidgets 3+ 1016
	27.1. Przykładowy warsztat 1016
		27.1.1. Biblioteka SOCI 1016
			27.1.1.1. Konfiguracja projektu SOCI w CMake 1017
		27.1.2. Serwer Firebird 1017
		27.1.3. Narzędzie FlameRobin 1017
	27.2. Szybkie wprowadzenie do relacyjnych baz danych i SQL 1018
		27.2.1. Relacyjne bazy danych 1018
		27.2.2. Podstawy języka SQL 1019
			27.2.2.1. Grupa instrukcji Data Definition Language (DDL) 1019
			27.2.2.2. Grupa instrukcji Data Manipulation Language (DML) 1020
			27.2.2.3. Data Query Language (DQL) i instrukcja SELECT 1021
			27.2.2.4. Grupa instrukcji Data Control Language (DCL) 1022
			27.2.2.5. Dla ambitnych, czyli automatyczne nadawanie identyfikatorów 1022
	27.3. Prosty przykład, czyli bazy danych i wxWidgets 3+ w praktyce 1023
		27.3.1. Przygotowanie projektu 1023
		27.3.2. Tworzenie nowej bazy danych za pomocą narzędzia FlameRobin 1024
		27.3.3. Zasady kreowania podstawowych zapytań do bazy danych za pomocą SOCI 1026
		27.3.4. Przykładowy program 1027
			27.3.4.1. Ogólna koncepcja oraz elementy GUI aplikacji ‘Sklep’ 1027
			27.3.4.2. Otwieranie i zamykanie sesji z bazą danych 1028
			27.3.4.3. Pobieranie i wyświetlanie informacji statystycznych i list zamówień 1030
			27.3.4.4. Dodawanie towarów do sklepu 1032
			27.3.4.5. Dodawanie klientów sklepu 1034
			27.3.4.6. Tworzenie i zamykanie zamówień 1036
			27.3.4.7. Wysyłanie własnych zapytań do bazy danych 1040
	27.4. Podsumowanie 1040
28. Bonus na koniec, czyli jak wykonać ekran startowy 1042
	28.1. Ekran startowy wxSplashScreen 1042
	28.2. Wzbogacony ekran startowy 1043
	28.3. To wciąż za mało! 1046
Zakończenie 1047
Dodatek A Krótki leksykon standardowych elementów GUI wxWidgets 1049
	Kontrolki statyczne 1049
	Kontrolki dynamiczne 1053
	Kontenery GUI 1080
Dodatek B Niektóre ważniejsze rozszerzenia wxWidgets 1087
	wxPdfDocument 1087
	wxMIDI 1087
	wxChart 1088
	wxThumbnail 1089
Dodatek C Licencje 1090
	wxWindows Library Licence, Version 3.1 1090
	GNU Library General Public License 1091
Indeks 1097
NAZWA I FORMAT
OPIS
ROZMIAR

Przeczytaj fragment

NAZWA I FORMAT
OPIS
ROZMIAR
(pdf)
Brak informacji

Inni Klienci oglądali również

23,40 zł
39,00 zł

ECDL S10. Podstawy programowania w języku Python

Europejski Certyfikat Umiejętności Komputerowych (European Computer Driving Licence - ECDL) potwierdza zdobycie umiejętności w zakresie obsługi komputera i programów użytkowych po odbyciu międzynarodowego systemu szkoleń.W Polsce licencji ...
7,89 zł
13,15 zł

JAVA. Uniwersalne techniki programowania. Rozdział 9-10

Rozdziały 9-10 z publikacji pt."JAVA. Uniwersalne techniki programowania", redakcja naukowa: Krzysztof Barteczko. Rozdział 9. KolekcjeRozdział 10. Przetwarzanie strumieniowe. Książka przedstawia sposoby i techniki programowa...
44,40 zł
74,00 zł

Podstawy programowania mikrokontrolera 8051

Książka wprowadza czytelnika w tajniki budowy i programowania mikrokontrolera 8051. Zakres omawianego materiału obejmuje wykorzystanie elementów zawartych w mikrokontrolerze oraz sterowanie różnorodnych elementów zewnętrznych. Każd...
47,40 zł
79,00 zł

JAVA. Uniwersalne techniki programowania

Książka przedstawia sposoby i techniki programowania użyteczne we wszelkich zastosowaniach języka Java. W publikacji akcentowany jest kontekst praktyczny: jak i do czego poszczególnych narzędzi językowych używać. Specjalna uwaga zwracana jest na...
102,94 zł
135,45 zł

Microsoft SQL Server 2008 od środka Programowanie w języku T-SQL

Opanuj zaawansowane techniki programowania w języku T-SQL i implementuj niezawodne rozwiązaniaPoznaj efektywne konstrukcje programistyczne i tajniki T-SQL - języka programowania baz danych wbudowanego w SQL Server. Ekspert w dziedzinie T-SQL Itzi...
41,40 zł
69,00 zł

Shadery. Zaawansowane programowanie w GLSL

Programowanie procesorów graficznych (GPU) staje się coraz popularniejsze. Dzieje się tak przede wszystkim z powodu dynamicznie rozwijającego się rynku gier i zapotrzebowania na deweloperów w tej dziedzinie, ale również z powodu wy...
32,40 zł
54,00 zł

Programowanie strukturalne

W połowie lat sześćdziesiątych rozwój sprzętu komputerowego oraz języków programowania umożliwił tworzenie bardziej złożonych programów. Różne podejścia do ich wytwarzania oraz szeroka dyskusja programistów doprowadzi...
7,89 zł
13,15 zł

JAVA. Uniwersalne techniki programowania. Rozdział 3-4

Rozdziały 3-4 z publikacji pt. "JAVA. Uniwersalne techniki programowania", redakcja naukowa: Krzysztof Barteczko. Rozdział 3. WyjątkiRozdział 4. Interfejsy i klasy wewnętrzne. Książka przedstawia sposoby i techniki programow...
23,40 zł
39,00 zł

Elixir. Aby programowanie znów było przyjemnością (ebook)

Zwiększ swoją produktywność dzięki jednemu z najbardziej przyjaznych języków programowania Chcesz nauczyć się...

Recenzje

Nikt nie dodał jeszcze recenzji. Bądź pierwszy!