Programowniae windows petzold Petzold01


PROGRAMOWANIE WINDOWS
Charles Petzold
Tytuł oryginału amerykańskiego: Programming Windows^ 5th ed.
Tłumaczenie: Bogdan Kamiński (rozdz. 1-5), Piotr Czarnocki (rozdz. 6-9),
Marcin Moskwa (rozdz. 10-12), Ewa Hadała-Mikołajczuk (rozdz. 13-15),
Andrzej Miron (rozdz. 16-18), Piotr Kresak (rozdz. 19-23)
Copyright 1999 by Microsoft Corporation
Oryginal English language edition Copyńght 1999 by Petzold, Charles (1999).
All rights published by arrangement with the originaI publisher, Microsoft Press, a division of
Microsoft Corporation, Redmond, Washington, USA.
Edycja polska:
Wydawnictwo RM, Warszawa 1999
Wydawnictwo RM, 00-987 Warszawa 4, skr. pocztowa 144
e-mail: rm@rm.com.pl
WWW: http: / /www.rm.com.pl
All rights reserved. No part of this book may be reproduced or transmitted in any form or by
any means, electronic or mechanical, including photocopying, recording or by any information
storage retrieval system, without permission from the publisher.
Żadna część tej pracy nie może być powielana i rozpowszechniana, w jakiejkolwiek formie i
w jakikolwiek sposób (elektroniczny, mechaniczny) włącznie z fotokopiowaniem, nagrywa-
niem na taśmy lub przy użyciu innych systemów, bez pisemnej zgody wydawcy.
Printed in Poland
The Microsoft Windows logo is a trademark of Microsoft Corporation
Wszystkie nazwy handlowe i towarów występujące w niniejszej publikacji są znakami towa-
rowymi zastrzeżonymi lub nazwami zastrzeżonymi odpowiednich firm odnośnych właścicieli.
Wydawnictwo RM dołożyło wszelkich starań, aby zapewnić najwyższą jakość tej książce.
Jednakże nikomu nie udziela żadnej rękojmi ani gwarancji. Wydawnictwo RM nie jest w
żadnym przypadku odpowiedzialne za jakąkolwiek szkodę (łącznie ze szkodami wynikłymi
z tytułu utraty zysków związanych z prowadzeniem przedsiębiorstwa, przerw w działalności
przedsiębiorstwa lub utraty informacji gospodarczej) będącej następstwem korzystania z
informacji zawartych w niniejszej publikacji, nawet jeśli Wydawnictwo RM zostało powiado-
mione o możliwości wystąpienia szkód.
ISBN 83-87216-90-9
Redaktor prowadz,acy: Mirosława Szymańska
Redakcja: joanna Cierkońska, Elżbieta Kaczak-Kościańczuk, Irmina Wala-Pęgierska
Korekta: Maria Najder
Projekt graficzny okładki według oryginału: Grażyna Jędrzejec
Skład: Robert Górski
Drcck i oprawa: READ ME Drukarnia w Łodzi
Wydanie II
10987654321
Spis treści
Część I. Podstawy 3
Rozdział 1: Zaczynamy 3
Środowisko Windows 4
Historia Windows 4
Cechy Windows 5
Łączenie dynamiczne ...
Opcje programowania Windows 9
API i modele pamięci ....
Opcje języka programowania 10
Środowisko programistyczne 11
Dokumentacja API 12
Pierwszy program windowsowy... 12
Tryb znakowy... 12
Odpowiednik windowsowy 13
Pliki nagłówkowe 14
Punkt startowy programu 15
Funkcja MessageBox 16
Kompilowanie, łączenie i uruchamianie 17
Rozdział 2: Wprowadzenie do unikodu 19
Krótka historia zestawów znaków 19
Standardy amerykańskie... 20
Inne języki 21
Rozszerzenie ASCII 22
Zestaw znaków dwubajtowych 24
Ratunek w unikodzie 25
Szerokie znaki i C 26
Typ danych char 26
Szersze znaki 27
Funkcje biblioteki znaków szerokich 2g
Utrzymywanie pojedynczego źródła 2g
Szerokie znaki i Windows 30
Typy Plików nagłówkowych Windows 31
Wywołania funkcji Windows 32
Funkcje obsługi łańcuchów znaków w Windows 33
Użycie printf w Windows 34
Formatowanie okna komunikatu 36
Wielojęzyczność i ta książka 37
VI Programowanie Windows
Rozdział 3: Windows i komunikaty... 39
Własne okno 39
Przegląd architektury 39
Program HELLOWIN 41
Myślenie globalne 44
Rejestracja klasy okna 49
Tworzenie okna 54
Wyświetlanie okna 56
Pętla komunikatów 56
Procedura okna... 58
Przetwarzanie komunikatów 59
Odtwarzanie pliku dźwiękowego 59
Komunikat WM PAINT 60
Komunikat WM DESTROY 62
Przeszkody w programowaniu windowsowym 62
Nie wywołuj mnie, ja wywołam ciebie 62
Komunikaty kolejkowane i niekolejkowane 64
Szybkie wejście i wyjście 65
Rozdział 4: Wyświetlanie tekstu 67
Malowanie i odświeżanie 68
Komunikat WM PAINT 68
Prostokąty zatwierdzone i unieważnione 69
Wprowadzenie do GDI 70
Kontekst urządzenia 70
Otrzymywanie uchwytu kontekstu urządzenia. Sposób pierwszy 71
Struktura informacji o malowaniu 72
Otrzymywanie uchwytu kontekstu urządzenia. Sposób drugi 74
Funkcja TextOut - szczegóły 75
Czcionka systemowa 76
Rozmiary znaku 77
Rozmiary tekstu - szczegóły 78
Formatowanie tekstu 79
Składanie wszystkiego w całość 80
Procedura okna w SYSMETS1.C 86
Brak miejsca 88
Wielkość obszaru roboczego 88
Paski przewijania 89
Zakres i pozycja paska przewijania 91
Komunikaty paska przewijania 92
Przewijanie SYSMETS 94
Dostosowanie programu do malowania 98
Poprawianie przewijania 99
Spis treści VII
Funkcje informacyjne pasków przewijania 99
Jak przewijać minimalnie 101
Nowy SYSMETS 102
Nie lubię myszy 108
Rozdział 5: Podstawy grafiki 111
Struktura GDI . 111
Filozofia GDI 111
Wywolania funkcji GDI 113
Podstawowe elementy GDI 114
Pozostale elementy GDI 115
Kontekst urządzenia 116
Pobieranie uchwytu kontekstu urządzenia 116
Pobieranie informacji o kontekście urządzenia 118
Program DEVCAPS1 118
Rozmiar urządzenia 121
Informacje o kolorach 127
Atrybuty kontekstu urządzenia 129
Zapamiętywanie kontekstu urządzenia 130
Rysowanie punktów i linii 131
Podświetlanie pikseli 132
Linie proste 132
Funkcje obramowania 137
Krzywe sklejane Bóziera 142
Używanie piór standardowych 147
Tworzenie, wybieranie i usuwanie piór 148
Zapełnianie przerw 151
Tryby rysowania 151
Rysowanie wypełnionych obszarów 153
Funkcja Polygon i tryb wypelniania wielokąta 154
Malowanie wnętrza 158
Tryby odwzorowania GDI 160
Współrzędne urządzenia i wspólrzędne logiczne 162
Systemy wspólrzędnych urządzenia 162
Widok i okno 163
Praca w trybie MM TEXT 165
Metryczne tryby odwwzorowania 168
"Modyfikowalne" tryby odwzorowania . 171
Program WHATSIZE 176
Prostokąty, regiony i obcinanie 179
Praca z prostokątami 180
Losowo kreślone prostokąty 181
Tworzenie i malowanie regionów 185
VIII Programowanie Windows
Obcinanie za pomocą prostokątów i regionów 186
Program CLOVER 187
Rozdział 6: Klawiatura 193
Podstawowe informacje 193
Ignorowanie klawiatury 193
Kto ma fokus 194
Kolejki i synchronizacja 195
Klawisze a znaW 196
Komunikaty klawiaturowe 196
Klawisze systemowe i niesystemowe 197
Kody klawiszy wirtualnych 198
Informacja przekazywana przez IParam 202
Stany klawisza [Shift] 204
Korzystanie z komunikatów związanych z naciskaniem klawiszy 205
Wzbogacanie SYSMETS o obsługę klawiatury 206
Komunikaty znakowe 213
Cztery komunikaty znakowe 214
Kolejność komunikatów 215
Naciskane klawisze a znaki 216
Komunikaty martwych znaków 217
Komunikaty klawiaturowe a zestawy znaków 218
Program KEYVIEW1 218
Problem z klawiaturami narodowymi 223
Zestawy znaków a czcionki 225
A co z unikodem? 236
TrueType i duże czcionw 237
Karetka (a nie kursor) 244
Funkcje karetki 244
Program TYPER 245
Rozdział 7: Mysz 253
Podstawy 254
Kilka szybkich definicji 254
Komunikaty myszy dla obszaru roboczego 255
Proste przetwarzanie komunikatów myszy: przykład 257
Obsługa klawiszy specjalnych 260
Kliknięcia dwukrotne 262
Komunikaty myszy nie związane z obszarem roboczym 263
Komunikat testu na trafienie obrzeża okna 264
Komunikaty generujące komunikaty 265
Testowanie trafienia w twoich programach 266
Przykład hipotetyczny 266
Spis treści IX
Przykładowy program 267
Emulacja myszy za pomocą klawiatury 270
Dodanie interfejsu klawiatury do programu CHECKER 271
Wykorzystanie okien potomnych do testowania trafienia 275
Okna potomne w programie CHECKER 276
Okna potomne a klawiatura 280
Przechwytywanie myszy 286
Blokowanie prostokąta 286
Przechwycenie : 289
Program BLOKOUT2 290
Kółko myszy 293
Co dalej? 300
Rozdział 8: Zegar 301
Podstawowe informacje o zegarze 302
System i zegar 302
Komunikaty zegarowe nie są asynchroniczne 303
Zegar: trzy metody wykorzystania 304
Metoda pierwsza 304
Metoda druga 307
Metoda trzecia 310
Wykorzystanie zegara 310
Zegar cyfrowy 311
Pobieranie aktualnego czasu 315
Wyświetlanie cyfr i dwukropków 316
Być światowcem 316
Zegar analogowy 317
Zegar a raporty 322
Rozdział 9: Kontrolki okna potomnego 327
Klasa przycisków 329
Tworzenie okien potomnych 332
Komunikacja między kontrolkami a oknem nadrzędnym 334
Komunikacja pomiędzy oknem nadrzędnym a kontrolkami 335
Przyciski klasyczne (naciskane) 336
Pola wyboru 336
Przyciski opcji 338
Pola grupy 338
Modyfikacja tekstu przycisku 338
Przyciski widoczne i dostępne 339
Przyciski i fokus 339
Kontrolki a kolory 340
Kolory systemowe 341
X Programowanie Windows
Kolory przycisku 342
Komunikat WM CTLCOLORBTN 343
Przyciski rysowane przez program 344
Klasa statyczna 350
Klasa paska przewijania 351
Program COLORS1 353
Automatyczny interfejs klawiatury 359
Zakładanie podklasy okna 360
Kolorowanie tła 360
Kolorowanie pasków przewijania i tekstów statycznych 361
Klasa edycji 362
Siyle klasy edycji 365
Kody powiadamiania kontrolki edycji 366
Posługiwanie się kontrolką edycji 366
Komunikaty wysyłane do kontrolki edycji 366
Klasa pola listy 367
Style pola listy 368
Umieszczanie łańcuchów w polu listy 369
Zaznaczanie i pobieranie elementów listy 370
Komunikaty wysłane przez pole listy : 371
Prosta aplikacja z polem listy 372
Lista plików 376
Program HEAD dla Windows 377
Rozdział 10: Menu i inne zasoby 383
Ikony, kursory, ciągi znaków i zasoby użytkownika 384
Dodawanie ikony do programu 384
Uzyskiwanie uchwytu ikon .389
Używanie ikon w programie 391
Używanie własnych kursorów 392
Ciągi znaków jako zasoby 393
Zasoby użytkownika 395
Menu 402
Założenia menu 402
Struktura menu 403
Definiowanie menu 403
Odwoływanie się do menu w programie 404
Menu i komunikaty 405
Program przykładowy 407
Konwenanse w menu 412
Definiowanie menu -trudniejszy sposób 413
Ruchome menu rozwijane (menu podręczne) 414
Używanie menu systemowego 419
Zmienianie menu 422
Spis treści XI
Inne polecenia menu 422
Niestandardowe podejście do menu 423
Klawisze skrótu 427
Dlaczego należy używać klawiszy skrótu 428
Niektóre zasady przypisywania skrótów 428
Tabela skrótów 429
Wczytywanie tabeli skrótów 429
Tłumaczenie naciśnięć klawiszy 429
Odbieranie komunikatów klawiatury 430
Program POPPAD z menu i klawiszami skrótu 431
Udostępnianie elementów menu 437
Przetwarzanie opcji menu 437
Rozdział 11: Okna dialogowe 441
Modalne okna dialogowe 442
Tworzenie okna dialogowego About 442
Okno dialogowe i jego szablon 446
Procedura okna dialogowego 448
Wyświetlanie okna dialogowego 449
Wariacje na temat 450
Bardziej złożone okna dialogowe 454
Praca z kontrolkami w oknie dialogowym 460
Przyciski OK i Cancel 462
Unikanie zmiennych globalnych 464
Grupy i miejsca przejścia tabulatorem 465
Rysowanie w oknie dialogowym 466
Używanie innych funkcji z oknami dialogowymi 467
Definiowanie własnych kontrolek 467
Niemodalne okna dialogowe 474
Różnice między modalnymi i niemodalnymi oknami dialogowymi 475
Program COLORS w nowej wersji 477
Program HEXCALC: okno zwykłe czy dialogowe? 481
Standardowe okna dialogowe 489
Nowa wersja programu POPPAD 489
Operacje wejścia/wyjścia na plikach Unicode 509
Zmiana czcionki 509
Wyszukiwanie i zastępowanie 510
Program Windows zawierający tylko jedno wywołanie funkcji 510
Rozdział 12: Schowek 513
Proste zastosowanie Schowka 513
Standardowe formaty danych Schowka 513
Przydzielanie pamięci 515
Przenoszenie tekstu do Schowka 517
XII Programowanie Windows
Pobieranie tekstu ze Schowka 518
Otwieranie i zamykanie Schowka 519
Schowek i Unicode 520
Poza standardowymi zastosowaniami Schowka 525
Używanie kilku elementów danych 525
Opóźnione przenoszenie 526
Własne formaty danych 528
Tworzenie podglądu Schowka 530
Łańcuch podglądu Schowka 530
Funkcje i komunikaty podglądu Schowka 531
Prosty podgląd Schowka 533
Część II: Grafika 537
Rozdział 13: Drukowanie 539
Podstawy drukowania 540
Drukowanie a buforowanie 540
Kontekst urządzenia drukującego 544
Rozszerzony program DEVCAPS 546
Wywołanie PrinterProperties 555
Sprawdzanie cechy BitBlt 556
Najprostszy program drukujący 557
Drukowanie grafiki i tekstu 558
Drukowanie konturu 561
Anulowanie wydruku i procedura Abort 562
Jak Windows korzysta z AbortProc 564
Implementacja procedury AbortProc 564
Tworzenie okna dialogowego Printing 567
Drukowanie w programach POPPAD 571
Rozdział 14: Bitmapy i BitBlty 579
Podstawowe wiadomości o bitmapach 579
Skąd się biorą bitmapy? 580
Rozmiary bitmap 581
Kolor i bitmapy 582
Urządzenia rzeczywiste 582
Obsługa bitmap w GDI 585
Transfer bloków bitowych 586
Prosty BitBlt 586
Rozciąganie bitmap 590
Tryb StretchBlt 593
Operacje rastrowe 593
Blt desenia 596
r-Ą
Spis treści XIII
Obiekt bitmapy GDI 598
Tworzenie DDB 599
Bity bitmapy 601
Kontekst urządzenia pamięciowego 602
Wczytywanie bitmap z zasobów 603
Format bitmapy monochromatycznej 607
Bitmapowe pędzle 610
Rysowanie na bitmapach 612
Bitmapa cieniowa 616
Wykorzystanie bitmap w menu 621
Nieprostokątne obrazy bitmapowe 633
Prosta animacja 639
Bitmapy poza oknem 642
Rozdział 15: Bitmapa niezależna od urządzeń 653
Format pliku DIB 653
DIB w stylu OS/2 654
Do góry nogami! 657
Bity pikseli DIB 658
Rozszerzony format DIB Windows 659
Realia 662
Kompresja DIB 663
Maskowanie kolorów 666
Nagłówek wersji 4 669
Nagłówek wersji 5 673
Wyświetlanie informacji DIB 674
Wyświetlanie i drukowanie 681
Penetracja wnętrza DIB 681
Piksel na piksel 684
Postawiony na głowie świat DIB 693
Wyświetlanie sekwencyjne 701
Rozciąganie i dopasowywanie 708
Konwersja kolorów, palety oraz szybkość działania 718
Połączenie DIB i DDB 719
Tworzenie DDB z DIB 719
Od DDB do DIB 726
Sekcja DIB 727
Więcej o odmienności sekcji DIB 735
Opcja odwzorowania pliku 736
Podsumowanie 737
Rozdział 16: Palette Manager 739
Stosowanie palet 739
Sprzęt wideo 740
XIV Programowanie Windows
Wyświetlanie odcieni szarości 741
Komunikaty palety 748
Indeks palety 749
Zapytanie o możliwość obsługi palety 752
Paleta systemowa 753
Inne funkcje palety 754
Problem działań rastrowych 754
Przyglądając się palecie systemowej 755
Animacja palety 764
Podskakująca piłka 765
Animacja jednej pozycji palety 773
Aplikacje inżynierskie 777
Palety i obrazy rzeczywiste 782
Palety i upakowane DIB 782
Paleta wielozadaniowa 792
Paleta półtonowa 798
Indeksowanie palety kolorów 802
Palety i obiekty bitmap 808
Palety i sekcje DIB 813
Biblioteka obsługi DIB 818
Struktura DIBSTRUCT 819
Funkcje informacyjne 821
Odczytywanie i zapisywanie pikseli 827
Tworzenie i konwersja sekcji DIB 831
Plik nagłówkowy DIBHELP i makra 843
Program DIBBLE 845
Palety proste; palety optymalne 868
Konwersja formatów 881
Rozdział 17: Tekst i czcionki 887
Proste wyświetlanie tekstu 887
Funkcje rysowania tekstu 887
Atrybuty kontekstu urządzenia dla tekstu 890
Czcionki zapasowe 891
Czcionki - informacje podstawowe 892
Typy czcionek 892
Czcionki TrueType 893
Atrybuty czy style? 894
Rozmiar punktowy 895
Interlinia i odstępy między znakami 895
Problem logicznego cala 895
Czcionka logiczna 897
Tworzenie i wybieranie czcionki logicznej 897
Program PICKFONT 898
Spis treści XV
Struktura czcionki logicznej 912
Algorytm odwzorowania czcionek 917
Uzyskiwanie informacji o czcionce 918
Zestawy znaków i Unicode 919
System EZFONT 921
Obracanie czcionki 929
Wyliczanie czcionek 931
Funkcje wyliczające 931
Okno dialogowe ChooseFont 932
Formatowanie akapitu 940
Proste formatowanie tekstu 941
Praca z akapitami 942
Podgląd wydruku 950
Trochę śmiesznych i fantazyjnych efektów 961
Ścieżka GDI 961
Pisaki o rozszerzonych możliwościach 962
Cztery przykładowe programy 966
Rozdział 18: Metapliki 973
Stary format metapliku 974
Proste zastosowanie metaplików przechowywanych w pamięci 974
Zapisywanie metaplików na dysku 977
Stary format metapliku i Schowek 978
Rozszerzone metapliki 982
Procedura podstawowa 983
Zajrzyjmy do środka 986
Metapliki i obiekty GDI 993
Metapliki i bitmapy 998
Wyliczanie metapliku 1001
Osadzanie obrazów 1008
Podgląd metapliku rozszerzonego i wydruki 1012
Wyświetlanie szczegółów w metaplikach 1021
Skalowanie i proporcje rozmiarów 1031
Tryby odwzorowania i metapliki 1033
Odwzorowanie i odiwarzanie 1035
Część III: Zagadnienia zaawansowane 1041
Rozdział 19: Interfejs wielodokumentowy 1043
Koncepcja MDI 1043
Elementy MDI 1043
Obsfuga MDI 1045
Przykładowa implementacja MDI 1047
XVI Programowanie Windows
Trzy menu 1057
Inicjacja programu 1058
Tworzenie okien potomnych 1059
Przetwarzanie komunikatu Więcej okien 1060
Okna potomne, okna dokumentów 1061
Sprzątanie 1063
Rozdział 20: Wielozadaniowość i wielowątkowoś 1065
Historia wielozadaniowości 1066
Wielozadaniowość w systemie DOS? 1066
Wielozadaniowość bez wywtaszczania 1066
Menedżer prezentacji i szeregowa kolejka komunikatów 1068
Rozwiązanie wielowątkowe 1068
Architektura wielowątkowa 1069
Uciążliwość wątków 1070
Przewaga Windows 1071
Nowość! Ulepszona formuła! Dostępne z wątkami! 1072
Wielowątkowość w Windows 1072
Losowe prostokąty raz jeszcze 1073
Zadanie z konkursu programistycznego Microsoftu 1076
Rozwiązanie wielowątkowe 1082
Jakieś problemy? 1090
Zalety snu 1091
Synchronizacja wątków 1092
Sekcja krytyczna 1092
Sygnalizowanie zdarzeń 1094
Program BIGJOB1 1094
Obiekt zdarzenia 1099
Lokalna pamięć wątku (TLS) 1103
Rozdział 21: Biblioteki dynamiczne 1107
Podstawowe informacje o bibliotekach 1107
Biblioteka - temat-rzeka 1108
Przykładowy DLL 1109
Punkt wejścia i wyjścia biblioteki 1112
Program testowy 1113
Biblioteki dynamiczne a pamięć wspólna 1116
Program STRPROG 1121
Współużytkowanie danych przez instancje programu STRPROG 1126
Różne tematy związane z bibliotekami dynamicznymi 1126
Dynamiczna konsolidacja bez importu 1127
Biblioteki z samymi zasobami 1128
Spis treści XVII
Rozdział 22: Dźwięk i muzyka 1133
Windows i multimedia 1133
Urządzenia systemów multimedialnych 1133
Przegląd API 1134
Eksplorujemy MCI - program TESTMCI 1135
MCITEXT a CD audio 1140
Dźwięk wave 1143
Dźwięk a kształt fali . 1144
Modulacja kodowo-impulsowa 1145
Częstotliwość próbkowania 1146
Rozmiar próbki 1147
Programowe generowanie sygnałów sinusoidalnych 1148
Cyfrowy odtwarzacz dźwięku 1157
Rozwiązanie alternatywne z zastosowaniem MCI 1168
Rozwiązanie ze znakowymi poleceniami MCI 1176
Format pliku wave 1180
Eksperymenty z syntezą addytywną 1181
Budzenie za pomocą dźwięków wave 1190
Muzyka MIDI 1198
Działanie MIDI 1198
Zmiana programu 1200
Kanały MIDI 1200
Komunikaty MIDI 1201
Wprowadzenie do sekwencji MIDI 1203
Symulowanie syntezatora MIDI z klawiatury PC 1210
Automat perkusyjny MIDI 1225
Multimedialne funkcje związane z czasem 1245
Operacje na plikach typu RIFF 1248
Rozdział 23: Smak Internetu 1253
Gniazda Windows 1253
Gniazda a TCP/IP 1253
Sieciowe usługi związane z czasem 1254
Program NETTIME 1255
Winlnet i FTP 1267
Przegląd FTP API 1268
Program demonstrujący ściąganie plików z serwera.FTP 1269
Indeks 1281
auto ra
Aktualne informacje na temat tej książki, ze sprostowaniami ewentualnych błę-
dów i nowymi wydrukami kodów włącznie, znajdziesz w moim ośrodku WWW
pod adresem www.cpetzold.com. Na tematy związane z książką możesz napisać
do mnie na adres charles@cpetzold.com. Postaram się odpowiedzieć na prostsze
pytania, chociaż niczego nie mogę obiecać. Jestem zwykle bardzo zajęty, a mój
kot nie chce się uczyć Windows API.
Chciałbym podziękować wszystkim pracownikom wydawnictwa Microsoft Press
za wielką pracę włożoną w tę książkę. Sądzę, że to wydanie, upamiętniające dzie-
siątą rocznicę pierwszego wydania Programowania Windows, jest najlepsze. Słowa
wdzięczności należą się także tym osobom z Microsoftu (włącznie z niektórymi
pierwszymi projektantami Windows), którzy służyli mi pomocą przy wcześniej-
szych wydaniach książki i tam zostali wymienieni.
Pragnę też podziękować rodzinie i przyjaciołom, a w szczególności tym (wiesz,
o kim mówię!), którzy umożliwili powstanie tej książki. Właśnie wam ją dedykuję.
Charles Petzold
5 października 1998 roku


Wyszukiwarka

Podobne podstrony:
Programowniae windows petzold Petzold05
Programowniae windows petzold Petzold08
Programowniae windows petzold Petzold09
Programowniae windows petzold Petzold13
Programowniae windows petzold Petzold24
Programowniae windows petzold Petzold02
Programowniae windows petzold Petzold21
Programowniae windows petzold Petzold22
Programowniae windows petzold Petzold14
Programowniae windows petzold Petzold04
Programowniae windows petzold Petzold20
Programowniae windows petzold Petzold03
Asembler Podstawy programowania w Windows
2 Podstawy programowania Windows (2)
Visual Studio 05 Programowanie z Windows API w jezyku C vs25pw
informatyka usb praktyczne programowanie z windows api w c andrzej daniluk ebook

więcej podobnych podstron