6610

Szczegóły
Tytuł 6610
Rozszerzenie: PDF
Jesteś autorem/wydawcą tego dokumentu/książki i zauważyłeś że ktoś wgrał ją bez Twojej zgody? Nie życzysz sobie, aby podgląd był dostępny w naszym serwisie? Napisz na adres [email protected] a my odpowiemy na skargę i usuniemy zabroniony dokument w ciągu 24 godzin.

6610 PDF - Pobierz:

Pobierz PDF

 

Zobacz podgląd pliku o nazwie 6610 PDF poniżej lub pobierz go na swoje urządzenie za darmo bez rejestracji. Możesz również pozostać na naszej stronie i czytać dokument online bez limitów.

6610 - podejrzyj 20 pierwszych stron:

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: [email protected] 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 [email protected]. 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 Cz�� I o s aw Rozdzia� 2 Z z nam ac Ta ksi��ka pokazuje, jak mo�esz tworzy� programy, kt�re dzia�aj� w �rodowisku Windows 98, Windows NT 4.0 i Windows NT 5.0 Microsoftu. Takie programy s� pisane w j�zyku programowania C i wykorzystuj� rodzimy interfejs programo- _ _ wania aplikacji Windows (ang. application programming interface, API). Jak dalej wyja�ni�, nie jest to jedyny spos�b tworzenia program�w, kt�re dzia�aj� w tym �rodowisku. Jednak bardzo wa�ne jest zrozumienie API Windows, niezale�nie od tego, w czym ostatecznie b�dziesz pisa� sw�j kod. jak zapewne wiesz, Windows 98 jest najnowszym wcieleniem graficznego syste- mu operacyjnego, kt�ry w rzeczywisto�ci sta� si� standardem dla komputer�w osobistych kompatybilnych z IBM-PC wykorzystuj�cych 32-bitowe mikroproce- sory Intela, jak 486 oraz Pentium. Windows NT to bardziej rozbudowana, prze- mys�owa wersja Windows, kt�ra dzia�a zar�wno na komputerach kompatybil- nych z PC, jak te� na niekt�rych RISC-owych stacjach roboczych. Po t� ksi��k� mo�esz si�gn��, je�li spe�niasz trzy podstawowe warunki. Po pierw- sze, powiniene� zna� Windows z perspektywy u�ytkownika. Nie masz co liczy� na napisanie aplikacji dla Windows, je�li nie pozna�e� interfejsu u�ytkownika. Z tego powodu sugeruj�, aby� wykonywa� swoje prace prograniistyczne (oraz inne prace) na komputerze opartym na Windows, u�ywaj�c aplikacji dzia�aj�cych w tym �rodowisku. Po drugie, powiniene� zna� C. Je�eli nie znasz, programowanie Windows praw- dopodobnie nie jest najlepsz� okazj� do studiowania tego j�zyka. Radz� ci, by� uczy� si� C w �rodowisku znakowym, oferowanym w oknie wiersza polece� MS- DOS-a w Windows. Programowanie Windows czasem wykorzystuje takie aspekty C, kt�rych nie spos�b pokaza� w programowaniu znakowym. W takich wypad- kach om�wi� je bardziej szczeg�owo. Zazwyczaj jednak wystarcza znajomo�� j�zyka, w szczeg�lno�ci struktur i wska�nik�w C. Pewne obycie ze standardow� bibliotek� C jest przydatne, ale niekonieczne. Po trzecie, powiniene� zainstalowa� na swoim komputerze 32-bitowy kompila- tor C i �rodowisko projektowe odpowiednie do pisania program�w Windows. Przyjmuj�, �e u�ywasz Visual C++ 6.0 Microsoftu, kt�ry mo�esz naby� osobno lub jako cz�� pakietu Visual Studio 6.0. I to ju� wszystko. Zak�adam, �e nie masz �adnego do�wiadczenia w programo- waniu w �rodowisku graficznym, takim jak Windows. Cz�� I: Podstawy �rodowisko Windows Windows wymaga wprowadzenia. �atwo zapominamy, jak bardzo pod jego wp�y- wem zmieni� si� spos�b obs�ugi komputer�w osobistych. Windows pokona� wy- boist� drog� wczesnych lat dzieci�cych i zdoby� mocn� pozycj� na rynku. Historia Windows Wkr�tce po wprowadzeniu jesieni� 1981 roku komputer�w IBM PC sta�o si� ja- sne, �e dominuj�cym systemem operacyjnym dla pecet�w (i zgodnych z nimi) b�dzie MS-DOS, czyli w pe�nym brzmieniu Microsoft Disk Operating System (dys- kowy system operacyjny Microsoftu). MS-DOS by� minimalnym systemem ope- racyjnym. U�ytkownikom umo�liwia� dost�p (za po�rednictwem interfejsu wier- sza polece�) do takich polece�, jak DIR i TYPE, oraz �adowanie do pami�ci pro- gram�w aplikacji w celu ich wykonania. Programistom aplikacji oferowa� niewiele wi�cej ponad zestaw wywo�a� funkcji do wykonywania operacji plikowego wej- �cia-wyj�cia (I/O). Przy innych zadaniach - w szczeg�lno�ci przy wy�wietlaniu na ekranie tekstu i (czasami) grafiki - aplikacje wykorzystywa�y bezpo�redni do- st�p do sprz�tu. Na skutek ogranicze� pami�ciowych i sprz�towych skomplikowane �rodowisko graficzne z trudem przenika�o do ma�ych komputer�w. Apple Computer zaofe- rowa� alternatyw� w stosunku do �rodowiska znakowego, wprowadzaj�c w stycz- niu 1983 roku sw�j nieudany komputer Lisa, a w styczniu 1984 roku ustanowi� standard dla �rodowiska graficznego za pomoc� modelu Macintosh. Pomimo malej�cego znaczenia na rynku, ci�gle stanowi on wzorzec, z kt�rym por�wny- wane s� inne �rodowiska graficzne. Wszystkie �rodowiska graficzne, z Macinto- shem i Windows w��cznie, korzystaj� z wynik�w pionierskich prac prowadzo- nych w po�owie lat siedemdziesi�tych w o�rodku badawczo-rozwojowym Xero- xa - Palo Alto Research Center (PARC). W listopadzie 1983 roku (po Lisie, ale przed Macintoshem) firma Microsoft Cor- poration zapowiedzia�a system Windows. Pojawi� si� on na rynku dwa lata p�- niej, w listopadzie 1985 roku. Przez nast�pne dwa lata Windows 1.0 by� stopnio- wo uzupe�niany o dodatkowe sterowniki adapter�w graficznych i drukarek w celu spe�nienia wymaga� rynku mi�dzynarodowego. Windows w wersji 2.0 pojawi� si� w listopadzie 1987. Sporo zmieniono w inter- fejsie u�ytkownika. Przede wszystkim sta�o si� mo�liwe zachodzenie na siebie okien, a nie tylko ustawianie ich s�siaduj�co, jak w wersji Windows 1.0. Windows 2.0 zawiera� te� rozszerzenia interfejsu klawiatury i myszy, u�atwiaj�ce pos�ugi- wanie si� menu i oknami dialogowymi. �wczesny Windows wymaga� tylko mikroprocesora Intel 8086 lub 8088 pracuj�- cego w trybie rzeczywistym, kt�ry dawa� dost�p do 1 megabajta (MB) pami�ci operacyjnej. Windows/386 (kt�ry pojawi� si� wkr�tce po wersji 2.0) wykorzysty- wa� ju� tryb wirtualny mikroprocesor�w 386 Intela do uruchamiania w oknach wielu program�w dosowych, maj�cych bezpo�redni dost�p do zasob�w sprz�to- wych. Dla zachowania zgodno�ci nazw przemianowano wtedy Windows 2.1 na Windows/286. Rozdzia� 1: Zaczynamy Windows 3.0 zosta� przedstawiony 22 maja 1990 roku. ��czy� on w jeden pro- dukt wcze�niejsze wersje Windows/286 i Windows/386. Du�� zmian� w Win- dows 3.0 by�o wykorzystanie 16-bitowego trybu chronionego mikroprocesor�w Intel 286, 386 i 486. Umo�liwi�o to samemu systemowi i jego aplikacjom dost�p do 16 megabajt�w pami�ci. Ca�kowicie zmieniono j�dro systemu uruchamiaj�ce programy i zarz�dzaj�ce plikami. Windows 3.0 by� pierwsz� wersj� Windows, kt�ra zyska�a szersze zastosowanie w domu i biurze. Ka�da historia Windows musi zawiera� wzmiank� o OS/2, systemie alternatyw- nym dla DOS-a i Windows, kt�ry zosta� opracowany przez Microsoft we wsp�- pracy z IBM-em. OS/2 w wersji 1.0 (dzia�aj�cy tylko w trybie znakowym) praco- wa� na procesorach 286 (i p�niejszych) Intela, a pojawi� si� pod koniec 1987 roku. Interfejs graficzny o nazwie Presentation Manager (PM) pojawi� si� dopiero w wersji 1.1 OS/2, w pa�dzierniku 1988 roku. Pierwotnie mia� on stanowi� wersj� Win- dows pracuj�c� w trybie chronionym, ale interfejs API zosta� zmieniony do tego stopnia, �e producenci oprogramowania nie byli w stanie obs�u�y� jednocze�nie obu platform. Konflikt pomi�dzy IBM-em i Microsoftem osi�gn�� punkt kulminacyjny we wrze- �niu 1990 roku i drogi obu firm rozesz�y si�. IBM przej�� OS/2, a Microsoft skon- centrowa� si� na Windows. Chocia� OS/2 miewa jeszcze zagorza�ych zwolenni- k�w, nigdy nie osi�gn�� popularno�ci cho�by zbli�onej do Windows. Wersja 3.1 Windows Microsoftu pojawi�a si� w kwietniu 1992 roku. Najwa�niej- szymi ulepszeniami by�y: TrueType (skalowalne czcionki Windows), multimedia (d�wi�k i muzyka), OLE (Object Linking and Embedding) i standaryzacja podsta- wowych okien dialogowych. Windows 3.1 dzia�a� tylko w trybie chronionym i wy- maga� procesora 286 lub 386 oraz co najmniej 1 MB pami�ci. Windows NT, wprowadzony w lipcu 1993 roku, by� pierwsz� wersj� Windows umo�liwiaj�c� korzystanie z trybu 32-bitowego procesor�w Intela 386, 486 i Pen- tium. Programy uruchamiane pod Windows NT maj� dost�p do 32-bitowej p�a- skiej przestrzeni adresowej i u�ywaj� zestawu 32-bitowych instrukcji. (O prze- strzeni adresowej powiem wi�cej w dalszej cz�ci tego rozdzia�u). Windows NT zosta� zaprojektowany jako system przeno�ny na procesory nie-Intelowskie i dzia�a na wielu RISC-owych stacjach roboczych. Windows 95 zosta� wprowadzony w sierpniu 1995 roku. Podobnie jak Windows NT, Windows 95 tak�e umo�liwia 32-bitowy tryb programowania procesor�w Intela 386 i p�niejszych. Chocia� nie posiada niekt�rych cech Windows NT, ta- kich jak wysoki poziom bezpiecze�stwa i przeno�no�� na maszyny RISC-owe, ma jednak mniejsze wymagania sprz�towe. Windows 98 pojawi� si� w czerwcu 1998 roku; zawarte w nim ulepszenia zwi�k- szaj� wydajno�� oraz umo�liwiaj� lepsz� wsp�prac� ze sprz�tem i wi�ksz� inte- gracj� z Internetem i WWW. Cechy Windows Windows 98 i Windows NT s� 32-bitowymi graficznymi systemami operacyjny- mi, kt�re cechuje wielozadaniowo�� z wyw�aszczaniem (ang. preemptive multita- sking) i wielow�tkowo�� (ang. multithreading). Windows ma graficzny interfejs Cz�� I: Podstawy u�ytkownika (ang. graphical user interface, GUI), czasem nazywany interfejsem wizualnym lub okienkowym �rodowiskiem graficznym. Podstawy GUI stworzo- no w po�owie lat siedemdziesi�tych w o�rodku PARC Xeroxa na komputerach Alto i Star w �rodowisku typu SmallTalk. Te prace uzyska�y p�niej wi�ksze zna- czenie i zosta�y spopularyzowane przez Apple Computer i Microsoft. Chocia� niegdy� wydawa�o si� to dosy� kontrowersyjne, obecnie ca�kiem oczywiste jest �e GUI to - jak uwa�a Charles Simonyi z Microsoftu - "najdonio�lejszy consen- sus" przemys�u komputer�w osobistych. Wszystkie GUI u�ywaj� grafiki do wy�wietlania rastrowego. Grafika pozwala na lepsze wykorzystanie obszaru ekranu, zapewnia ciekawe �rodowisko wizualne dla przenoszenia informacji i mo�liwo�� uzyskania WYSIWYG (ang. zvhat you see is what you get - otrzymasz to, co widzisz), czyli pe�nej zgodno�ci wygl�du do- kumentu na ekranie z jego wydrukiem. Dawniej na ekranie mo�na by�o jedynie wy�wietli� tekst wprowadzany przez u�ytkownika z klawiatury. W nowym typie interfejsu ekran staje si� dla u�yt- kownika urz�dzeniem wej�ciowym. Na ekranie pokazywane s� r�ne obiekty graficzne w formie ikon i urz�dzenia wej�ciowe, jak przyciski i paski przewija- nia. Pos�uguj�c si� klawiatur� (lub urz�dzeniami wskazuj�cymi typu mysz) u�yt- kownik mo�e bezpo�rednio manipulowa� tymi obiektami na ekranie. Obiekty graficzne mog� by� przeci�gane, przyciski - przyciskane, a suwaki pask�w prze- wijania - przesuwane. Interakcja mi�dzy u�ytkownikiem i programem staje si� bli�sza. Zamiast jedno- stronnego przesy�ania informacji z klawiatury do programu w celu wy�wietlenia na ekranie, u�ytkownik bezpo�rednio oddzia�uje na obiekty na ekranie, a te od- powiadaj� na jego polecenia i ukierunkowuj� kolejne kroki. Nikt nie lubi sp�dza� d�ugich godzin na nauce obs�ugi komputera lub nowego programu. Windows wychodzi nam naprzeciw, gdy� wszystkie aplikacje maj� zbli�ony wygl�d na ekranie i opieraj� swoje dzia�anie na podobnych zasadach. Program zajmuje zwykle na ekranie prostok�tny obszar, zwany oknem. Ka�de okno jest identyfikowane przez pasek tytu�u. Wi�kszo�� funkcji programu jest do- st�pna w jego menu. U�ytkownik mo�e zobaczy� informacj�, kt�ra nie mie�ci si� na ekranie, wykorzystuj�c paski przewijania. Niekt�re pozycje menu wywo�uj� okna dialogowe, w kt�rych u�ytkownik mo�e wprowadzi� dodatkowe informa- cje. Jedno z okien dialogowych (u�ywane do otwierania pliku) mo�na znale�� w ka�dym wi�kszym programie. To okno dialogowe wygl�da tak samo (albo pra- wie tak samo) we wszystkich programach i prawie zawsze jest wywo�ywane przez t� sam� opcj� menu. Poniewa� wiesz ju�, jak u�ywa� program�w Windows, �atwo mo�esz nauczy� si� dalszych funkcji. Menu i okna dialogowe pozwalaj� u�ytkownikowi ekspery- mentowa� z nowym programem i odkrywa� jego mo�liwo�ci. Wi�kszo�� progra- m�w Windows mo�e by� obs�ugiwana na dwa sposoby: z klawiatury i za pomo- c� myszy. Chocia� wi�kszo�� funkcji program�w jest dost�pna z klawiatury, to pos�ugiwanie si� mysz� jest zdecydowanie wygodniejsze. Z perspektywy programisty sp�jny interfejs u�ytkownika wynika z u�ycia wbu- dowanych procedur do konstrukcji menu i okien dialogowych. Wszystkie menu Rozdzia� 1: Zaczynamy 7 obs�uguje si� za pomoc� klawiatury i myszy w ten sam spos�b, poniewa� to Windows, a nie aplikacja odpowiada za ich dzia�anie. Aby u�atwi� jednoczesne korzystanie z wielu program�w i wymian� informacji mi�dzy nimi, Windows oferuje wielozadaniowo��. Wiele program�w mo�e dzia�a� i wy�wietla� wyniki w tym samym czasie. Ka�dy program posiada na ekranie swoje okno. U�ytkownik mo�e przesuwa� okna po ekranie, zmienia� ich rozmia- ry, prze��cza� si� mi�dzy r�nymi programami i przenosi� dane z jednego pro- gramu do drugiego. Poniewa� te okna przypominaj� troch� papiery roz�o�one na pulpicie biurka (zanim, oczywi�cie, biurka zosta�y opanowane przez kompu- tery), Windows czasem u�ywa metafory "pulpit" (ang. desktop) dla widoku wie- lu program�w na ekranie. Wcze�niejsze wersje Windows u�ywa�y tzw. wielozadaniowo�ci bez wyw�aszcza- nia (ang. nonpreemptive multitasking). Oznacza�o to, �e Windows nie u�ywa� ze- gara systemowego do dzielenia czasu procesora mi�dzy uruchomione programy. Musia�y one dobrowolnie odda� sterowanie, aby inne programy mog�y dzia�a�. W Windows NT i Windows 98 wyst�puje wielozadaniowo�� z wyw�aszczaniem i programy mog� same dzieli� si� na wiele w�tk�w, kt�re wykonuj� si� prawie jednocze�nie. System operacyjny nie mo�e realizowa� wielozadaniowo�ci, je�li nie zarz�dza pami�ci�. W miar� jak uruchamiane s� nowe programy, a stare si� ko�cz�, pa- mi�� ulega fragmentacji. System musi konsolidowa� woln� pami��. Wymaga to przemieszczania blok�w kodu i danych w pami�ci. Nawet Windows 1.0, pracuj�cy na procesorze 8088, potrafi� w ten spos�b zarz�- dza� pami�ci�. Maj�c na uwadze ograniczenia trybu rzeczywistego, mo�emy uzna� to za majstersztyk autor�w systemu. Tak oto ograniczenie pami�ci archi- tektury PC do 640 kilobajt�w (KB) zosta�o skutecznie prze�amane bez dok�ada- nia dodatkowej pami�ci. Ale Microsoft poszed� dalej: Windows 2.0 dawa� aplika- cjom dost�p do pami�ci rozszerzonej (EMS), a Windows 3.0 pracowa� w trybie chronionym daj�c aplikacjom dost�p do 16 MB pami�ci rozszerzonej. Windows NT i Windows 98, jako 32-bitowe systemy operacyjne z p�ask� przestrzeni� adre- sow�, prze�ama�y te ograniczenia. Programy pracuj�ce w Windows mog� wsp�u�ytkowa� procedury, kt�re znaj- duj� si� w innych plikach nazywanych bibliotekami dynamicznymi (ang. dyna- miclink libraries, DLL). Windows zawiera mechanizm ��cz�cy procedury w DLL- ach z programem podczas jego pracy. Sam system zasadniczo jest tak�e zbiorem takich bibliotek. Windows to interfejs graficzny i programy windowsowe mog� w pe�ni wykorzy- stywa� grafik� i sformatowany tekst na ekranie i w drukarce. Interfejs graficzny nie tylko jest bardziej atrakcyjny, ale mo�e dostarczy� u�ytkownikowi wi�cej in- formacji. Programy pisane w �rodowisku Windows nie maj� bezpo�redniego dost�pu do kart graficznych i drukarek. W zamian Windows zawiera j�zyk programowania grafiki, nazywany GDI (ang. Graphics Display Interface), pozwalaj�cy na �atwe wy�wietlanie grafiki i sformatowanego tekstu. Windows wirtualizuje urz�dze- nia wy�wietlaj�ce. Program powinien dzia�a� na ka�dej karcie graficznej i ka�dej 8 Cz�� I: Podstawy drukarce, dla kt�rych dost�pne s� sterowniki Windows. Nie potrzebuje sam okre- �la� rodzaju sprz�tu do��czonego do systemu. Stworzenie dla pecet�w interfejsu graficznego, niezale�nego od urz�dze�, nie by�o �atwym zadaniem dla projektant�w Windows. Z za�o�enia PC by� systemem o otwartej architekturze. Wielu niezale�nych wytw�rc�w opracowywa�o wi�c urz�dzenia peryferyjne. Chocia� powsta�o kilka standard�w, konwencjonalne pro- gramy MS-DOS-a musia�y indywidualnie obs�ugiwa� wiele r�nych konfiguracji sprz�towych. Najcz�ciej dotyczy�o to program�w do obr�bki tekstu, sprzeda- wanych z kilkoma dyskietkami ma�ych plik�w, z kt�rych ka�dy s�u�y� do obs�u- gi konkretnego typu drukarki. Programy windowsowe nie wymagaj� takich ste- rownik�w, poniewa� stanowi� one cz�� systemu operacyjnego. ��czenie dynamiczne Zasada pracy Windows oparta jest na koncepcji ��czenia dynamicznego (ang. dynamic linking). Windows dostarcza mn�stwa wywo�a� funkcji, kt�re aplikacja mo�e wykorzysta� przy realizacji interfejsu u�ytkownika i wy�wietlaniu tekstu i grafiki. Funkcje te zosta�y umieszczone w dynamicznych bibliotekach, inaczej DLL-ach. S� to pliki o rozszerzeniach .DLL lub czasami .EXE, przewa�nie znaj- duj�ce si� w podkatalogu \WINDOWS\SYSTEM Windows 98 oraz podkatalo- gach \WINNT\SYSTEM i \WINNT\SYSTEM32 Windows NT. Dawniej du�a cz�� Windows by�a zrealizowana w postaci zaledwie trzech bi- bliotek dynamicznych. Reprezentowa�y one trzy podstawowe podsystemy Win- dows, czyli Kernel, User i GDI. Ilo�� podsystem�w wzros�a w ostatnich wersjach Windows, ale wi�kszo�� funkcji, kt�rych u�ywa typowy program, znajduje si� nadal w tych trzech modu�ach. Kernel (aktualnie zrealizowany w 16-bitowym KRNL386.EXE i 32-bitowym KERNEL32.DLL) obs�uguje wszystkie funkcje j�dra systemu operacyjnego, jak zarz�dzanie pami�ci�, plikowe I/O i uruchamianie zada�. User (zrealizowany w 16-bitowym USER.EXE i 32-bitowym USER32.DLL) obs�uguje interfejs u�ytkownika i ca�� logik� okien. GDI (zrealizowany w 16-bi- towym GDI.EXE i 32-bitowym GDI32.DLL) jest interfejsem urz�dze� graficznych, pozwalaj�cym programowi wy�wietli� tekst i grafik� na ekranie lub wydruko- wa� na drukarce. Windows 98 oferuje aplikacjom kilka tysi�cy funkcji do wykorzystania. Ka�da funkcja posiada opisow� nazw�, na przyk�ad CreateWindozu. Ta funkcja (jak mo- �esz si� spodziewa�) tworzy okno twojego programu. Wszystkie funkcje Windows, kt�rych mo�e u�ywa� aplikacja, s� zadeklarowane w plikach nag��wkowych. W swoim programie b�dziesz korzysta� z wywo�a� funkcji Windows praktycz- nie w ten sam spos�b, w jaki pos�ugujesz si� funkcjami bibliotecznymi C, takimi jak strlen. Podstawow� r�nic� jest to, �e kod maszynowy dla funkcji bibliotecz- nych C jest w��czony do kodu twojego programu, podczas gdy kod funkcji Win- dows jest umieszczony na zewn�trz twojego programu, w DLL-ach. Kiedy uruchamiasz program windowsowy, ��czy si� on z Windows poprzez proces zwany ��czeniem dynamicznym (ang. dynamic linking). Plik EXE w Windows za- wiera odno�niki do r�nych bibliotek dynamicznych i do znajduj�cych si� w nich funkcji wykorzystywanych w programie. Gdy program jest �adowany do pami�- Rozdzia� 1: Zaczynamy 9 ci, odwo�ania programu s� odwzorowane na wej�cia funkcji w bibliotekach, kt�- re s� w miar� potrzeb �adowane do pami�ci. Kiedy ��czysz program, by stworzy� plik wykonywalny, musisz po��czy� go ze specjalnymi bibliotekami importowymi, dostarczanymi razem ze �rodowiskiem programistycznym. Te biblioteki importowe zawieraj� nazwy bibliotek dynamicz- nych i informacj� o wszystkich wywo�aniach funkcji Windows. Konsolidator (ina- czej linker) u�ywa tej informacji do zbudowania tabeli w pliku EXE, kt�r� Win- dows wykorzystuje do odwzorowania wywo�a� na funkcje Windows podczas �a- dowania programu. Opcje programowania Windows Ta ksi��ka zawiera du�o przyk�adowych program�w, kt�re pozwol� zilustrowa� r�ne techniki programowania w Windows. S� one napisane w C i u�ywaj� czystego API Windows. Jest to klasyczny spos�b programowania w Windows. Tak pisali�my pro- gramy dla Windows 1.0 w 1985 roku, i tak mo�na to robi� r�wnie� dzisiaj. API i modele pami�ci Z punktu widzenia programisty system operacyjny jest definiowany przez swoje API. Obejmuje ono wszystkie wywo�ania funkcji, kt�re mo�e wykorzystywa� apli- kacja oraz definicje powi�zanych typ�w danych i struktur. W �rodowisku Windows API wymusza pewn� architektur� programu, kt�r� wyja�nimy w nast�pnych roz- dzia�ach. W zasadzie API Windows niewiele si� zmieni�o od czas�w Windows 1.0. Dla pro- gramisty, kt�ry ma do czynienia z Windows 98, kod �r�d�owy program�w dla Windows 1.0 b�dzie wygl�da� znajomo. API zosta�o tylko znacznie rozszerzone. Windows 1.0 zawiera� mniej ni� 450 funkcji; obecnie s� ich tysi�ce. Najwi�ksz� zmian� w API Windows i jego sk�adni spowodowa�o przej�cie z ar- chitektury 16-bitowej na 32-bitow�. Wersje Windows od 1.0 do 3.1 pos�ugiwa�y si� pami�ci� segmentow� trybu 16-bitowego procesor�w Intel 8086, 8088 i 286. Tryb ten jest w dalszym ci�gu u�ywany dla zapewnienia kompatybilno�ci w 32- bitowych procesorach Intela, pocz�wszy od 386. Wielko�� rejestru procesora w tym trybie wynosi�a 16 bit�w, wi�c typ danych int w C zawiera� tak�e 16 bit�w. W segmentowym modelu pami�ci adresy pami�ci sk�ada�y si� z dw�ch cz�ci: 16-bitowego wska�nika segmentu (ang. segment pointer) i 16-bitowego wska�ni- ka przesuni�cia (ang. offset pointer). Z perspektywy programisty by�o to bardzo skomplikowane i wymaga�o rozr�niania wska�nik�w long lub far (zawieraj�cych segment i przesuni�cie adresu) i wska�nik�w short lub near, zawieraj�cych jedy- nie przesuni�cie adresu (segment adresu by� domy�lny). Ju� w Windows NT i Windows 95 skorzystano z 32-bitowego p�askiego modelu pami�ci, u�ywaj�c 32-bitowych tryb�w procesor�w Intela 386, 486 i Pentium. Typ danych int w C zosta� rozszerzony do 32 bit�w. Programy napisane dla 32-bito- wych wersji Windows u�ywaj� prostych, 32-bitowych warto�ci wska�nik�w, kt�re adresuj� p�ask�, liniow� przestrze� adresow�. 10 Cz�� I: Podstawy API dla 16 bitowych wersji Windows (od 1.0 do 3.1) jest znane teraz jako Winl�. API dla 32-bitowych wersji Windows (Windows 95, Windows 98 i wszystkich wersji Windows NT) nazywane jest Win32. Przy przej�ciu z Winl6 do Win32 wiele funkcji pozosta�o takich samych, ale niekt�re musia�y by� rozszerzone lub zmie- nione. Na przyk�ad wsp�rz�dne graficzne zmieni�y si� z 16-bitowych w Win16 na 32-bitowe w Win32. Ponadto niekt�re funkcje Win16 zwraca�y dwie wsp�- rz�dne, spakowane w 32-bitow� liczb� ca�kowit�. Takie rozwi�zanie by�o niemo�- liwe w Win32, wi�c dodano nowe funkcje, kt�re dzia�a�y nieco inaczej. Wszystkie 32-bitowe wersje Windows zawieraj� zar�wno API Win16 zapewniaj�- ce kompatybilno�� ze starymi aplikacjami, jak i API Win32 do uruchamiania no- wych aplikacji. Ciekawe, �e ca�y ten proces dzia�a inaczej w Windows NT ni� w Windows 95 i Windows 98. W Windows NT wywo�ania funkcji Win16 przechodz� przez warstw� translacji i s� zamieniane na wywo�ania funkcji Win32, obs�ugiwa- nych przez system operacyjny. W Windows 95 i Windows 98 proces przebiega od- wrotnie: wywo�ania funkcji Win32 przechodz� przez warstw� translacji i s� zamie- niane na wywo�ania funkcji Win16, obs�ugiwanych przez system operacyjny. Przez pewien czas istnia�y dwa r�ne (przynajmniej z nazwy) zestawy API Win- dows. Win32s, gdzie "s" oznacza�o podzbi�r (ang. subset) pozwala�o programi- �cie na pisanie 32-bitowych aplikacji dla Windows 3.1. To API zawiera�o tylko 32-bitowe wersje funkcji ju� zrealizowanych w Win16. API Windows 95 by�o na- zywane przez pewien czas Win32c, gdzie "c" oznacza�o kompatybilno�� (ang. compatibility), ale to okre�lenie przesta�o by� u�ywane. Teraz przyjmuje si�, �e zar�wno Windows NT, jak i Windows 98 umo�liwiaj� ko- rzystanie z API Win32. Jednocze�nie ka�dy z tych system�w operacyjnych ma pewne cechy w�asne niedost�pne w drugim. Poniewa� jednak przewa�aj� funk- cje wsp�lne, mo�liwe jest pisanie program�w, kt�re dzia�aj� w obu systemach. Uwa�a si�, �e te dwa produkty stan� si� kiedy� jednym systemem operacyjnym. Opcje j�zyka programowania U�ywanie C i czystego API nie jest wprawdzie jedynym sposobem pisania pro- gram�w Windows 98, pozwala jednak na najwszechstronniejsze i najefektywniej- sze wykorzystanie cech tego systemu. Programy wykonywalne s� wzgl�dnie ma�e i nie wymagaj� do pracy zewn�trznych bibliotek (poza DLL-ami samych Win- dows, oczywi�cie). A co najwa�niejsze, poznanie API umo�liwi ci g��bsze zrozu- mienie budowy wewn�trznej Windows, niezale�nie od tego, jak ostatecznie b�- dziesz pisa� aplikacje dla tego systemu. S�dz�, �e nauka klasycznego programowania Windows jest wa�na dla ka�dego pro- gramisty, nie zmuszam ci� jednak do stosowania C i API w ka�dej aplikacji Win- dows. Wielu programist�w - szczeg�lnie opracowuj�cych programy do wewn�trz- nego u�ytku firmy lub programuj�cych hobbystycznnie w domu - docenia prosto- t� takich �rodowisk projektowych, jak Visual Basic Microsoftu czy Delphi Borlanda (kt�re jest obiektowym dialektem Pascala). Te �rodowiska pozwalaj� programi�cie skupi� uwag� na interfejsie u�ytkownika i do��czaj� kod z obiektami interfejsu u�yt- kownika. Je�li chcesz nauczy� si� Visual Basica, mo�esz skorzysta� z innych ksi�- �ek wydawnictwa Microsoft Press, na przyk�ad Learn Visual Basic Now (1996), na- pisanej przez Michaela Halvorsona. Rozdzia� 1: Zaczynamy 11 W�r�d zawodowych programist�w - zw�aszcza pisz�cych aplikacje handlowe - szczeg�lnie popularn� alternatyw� sta� si� w ostatnich latach Visual C++ Micro- softu z bibliotek� klas MFC (Microsoft Foundation Class Library). MFC hermetyzu- je wiele trudniejszych zagadnie� programowania Windows w zbiorze klas C++. Podr�cznikiem MFC jest ksi��ka Jeffa Prosise'a Programming Windows with MFC Second Edition (Microsoft Press, 1999). Rosn�ca popularno�� Internetu i WWW spowodowa�a ostatnio du�e zainteresowa- nie j�zykiem Java firmy Sun Microsystems. Jest to j�zyk niezale�ny od procesora, inspirowany przez C++ i zawieraj�cy pakiet narz�dziowy do pisania aplikacji gra- ficznych, kt�re mog� dzia�a� w wielu systemach operacyjnych. Dobr� ksi��k� Mi- crosoft Press o J++ Microsoftu (�rodowisku projektowym Javy Microsoftu) jest Pro- gramming Visual j++ 6.0 (1999), napisana przez Stephena R. Davisa. Trudno jest wskaza� ten jedyny, w�a�ciwy spos�b pisania aplikacji dla Windows. Prawdopodobnie sam rodzaj pisanej aplikacji okre�li narz�dzia. Ale poznanie API umo�liwi ci wgl�d w prac� Windows, kt�ra nie zale�y od u�ywanej przez ciebie metody kodowania. Windows to z�o�ony system; umieszczenie warstwy opro- gramowania ponad API nie eliminuje z�o�ono�ci - pozwala tylko na jej ukrycie. Pr�dzej czy p�niej ta z�o�ono�� da zna� o sobie. Znajomo�� API u�atwi ci przy- wr�cenie poprawnego dzia�ania aplikacji. Ka�da dodatkowa warstwa oprogramowania ponad API ogranicza ci� do podzbioru jego pe�nej funkcjonalno�ci. Na przyk�ad mo�esz stwierdzi�, �e Visual Basic jest idealny dla twojej aplikacji, z wyj�tkiem tego, �e nie pozwala na kilka istotnych prac pomocniczych. W tym wypadku powiniene� u�y� wywo�a� czystego API. API definiuje wszech�wiat, w kt�rym istniejemy jako programi�ci Windows. Nic nie otworzy przed tob� takich mo�liwo�ci, jak bezpo�rednie wykorzystanie API. Szczeg�lnie problematyczne jest zastosowanie MFC. Chocia� bardzo upraszcza wykonywanie wielu zada� (takich jak OLE), zwykle musia�em m�czy� si� z inny- mi jego cechami (takimi jak architektura dokument/widok), aby zmusi� je do dzia- �ania po mojej my�li. MFC nie sta�o si� panaceum dla programowania Windows, chocia� wiele os�b mia�o nadziej�, �e tak b�dzie. Ma�o kto uzna je za przyk�ad do- brego projektu obiektowego. Programi�ci MFC, chc�c zrozumie�, co si� dzieje w u�ywanych przez nich klasach, zmuszeni s� cz�sto zagl�da� do kodu �r�d�owego. Zrozumienie kodu �r�d�owego to jedna z korzy�ci nauczenia si� API Windows. �rodowisko programistyczne W tej ksi��ce przyj��em, �e u�ywasz Visual C++ 6.0 Microsoftu, kt�ry jest do- st�pny w wersji Standard, Professional i Enterprise. Ta�sza wersja Standard wy- starczy do uruchomienia program�w z tej ksi��ki. Visual C++ jest tak�e cz�ci� Visual Studio 6.0. Pakiet Visual C++ Microsoftu zawiera nie tylko kompilator C i inne narz�dzia i pliki konieczne do kompilowania i ��czenia program�w Windows. Zawiera tak�e Visual C++ Developer Studio - �rodowisko, w kt�rym mo�esz prowadzi� edycj� swojego kodu �r�d�owego, z �atwo�ci� tworzy� takie zasoby, jak ikony i okna dia- logowe oraz kompilowa�, uruchamia� i testowa� swoje programy. 12 Cz�� I: Podstawy Je�li u�ywasz Visual C++ 5.0, powiniene� pobra� nowe wersje plik�w nag��wko- wych i bibliotek importowych dla Windows 98 i Windows NT 5.0. S� one dost�p- ne na stronie WWW Microsoftu. Po��cz si� z http://www.microsoft.com/msdn/ i wybierz Downloads, a potem Platform SDK (Software Development Kit). B�dziesz mia� mo�liwo�� pobra� i zainstalowa� zaktualizowane pliki w dowolnie wybra- nym katalogu. Aby zmusi� Microsoft Developer Studio do szukania plik�w w tym katalogu, wybierz Options z menu Tools i przejd� na kart� Directories. Cz�stka msdn w adresie URL strony Microsoftu oznacza "Microsoft Developer Network". Jest to program, kt�ry zapewnia projektantom cz�sto aktualizowane CD-ROM-y z informacjami, potrzebnymi w zaawansowanych pracach programi- stycznych. Prawdopodobnie b�dziesz chcia� zaprenumerowa� MSDN, aby nie �ci�ga� tych informacji ze strony Microsoftu. Dokumentacja API Ta ksi��ka nie zast�puje oficjalnej dokumentacji API Windows. Dokumentacja ta nie jest ju� dost�pna w formie drukowanej; teraz wyst�puje tylko na CD-ROM- ach i w Internecie. Instaluj�c Visual C++ 6.0, uzyskasz system pomocy bezpo�redniej, zawieraj�cy do- kumentacj� API. Mo�esz zaktualizowa� t� dokumentacj�, prenumeruj�c MSDN lub u�ywaj�c sieciowego systemu pomocy bezpo�redniej Microsoftu. Zacznij od po��- czenia si� z http://www.microsoft.com/msdn/ i wybierz MSDN Library Online. W