Programowanie Windows - Charles Petzold.pdf

(3043 KB) Pobierz
Programowanie Windows - Charles Petzold
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
Strona 1
Programowanie Windows - Charles Petzold
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
Strona 2
Programowanie Windows - Charles Petzold
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
Strona 3
Programowanie Windows - Charles Petzold
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
Strona 4
Programowanie Windows - Charles Petzold
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
Strona 5
Zgłoś jeśli naruszono regulamin