标题：Windows程序设计(英文版)
版权信息
书 名: Windows程序设计(英文版)
  作　者：(美国)CharlesPetzold
出版社： 人民邮电出版社
出版时间： 2009
ISBN: 9787115193155
开本： 16
定价: 189.00 元
内容简介
有经验的Windows程序员都知道，如果在工作中遇到了技术难题，最好的解决办法就是去查Petzold的书。是的，《Windows程序设计》内容博大精深，阐述透彻流畅，是毋庸置疑的Windows程序设计的权威著作，也是享誉世界的微软技术大师、Windows先驱奖得主CharlesPetzold的代表作。多少年来，一代又一代Windows程序员受惠于《Windows程序设计》，无数在Windows上运行的程序都不同程度地受到了《Windows程序设计》的影响。今天，Win32API之上已经有了各种框架使我们的开发工作更加方便，但是Petzold著作的魅力不减，仍然在不断重印。原因很简单，正如一位读者说的，Win32API依旧是Windows的基础，不经过《Windows程序设计》的洗礼，你很难说自己已经真正进入Windows程序设计技术的圣殿。上册：《Windows程序设计》分上下两册装订，本册讲述了Windows编程中的基础知识，包括键盘、鼠标、Unicode、菜单、对话框等内容，通过具有代表性的示例为开发人员提供了基本的指导。书中代码可以在图灵网站《Windows程序设计》网页免费注册下载。
《Windows程序设计》分上下两册装订，本册讲述了Windows编程中较高级的主题，包括图形、打印机、声音和音乐、动态链接库、多任务和多线程、多文档界面等内容，为开发人员提供了更全面的编程指导。书中代码可以在图灵网站《Windows程序设计》网页免费注册下载。
作者简介
CharlesPetzold　微软技术领域的大师级专家。他的著作和文章为Wiridows程序设计技术的推广和普及作出了巨大贡献。1994年被微软公司授予“Windows先驱奖”，是全球唯一获此殊荣的技术作家。他也是资格最老的微软MVP之一。除本书外，他撰写的TheAnnotatedTunng（中文版将由人民邮电出版社出版）和Code等书也是脍炙人口的名著。
编辑推荐
《Windows程序设计》(英文版)(第5版)(套装上下册)Windows程序设计“圣经”,十年依旧畅销不衰的神品,传奇大师带你走入Windows编程圣殿
有经验的Windows程序员都知道，如果在工作中遇到了技术难题。最好的解决办法就是去查Petzold的书。是的，《Windows程序设计》内容博大精深。阐述透彻流畅，是毋庸置疑的Windows程序设计的权威著作，也是享誉世界的微软技术大师、Windows先驱奖得主CharlesPetzold的代表作。多少年来，一代又一代Windows程序员受惠于《Windows程序设计》，无数在Windows上运行的程序都不同程度地受到了《Windows程序设计》的影响。
今天，Win32API之上已经有了各种框架使我们的开发工作更加方便。但是Petzold著作的魅力不减。仍然在不断重印。原因很简单。正如一位读者说的，Win32API依旧是Windows的基础。不经过《Windows程序设计》的洗礼，你很难说自己已经真正进入Windows程序设计技术的圣殿。
目录
上册
Section I　The Basics
Chapter 1　Getting Started　3
The Windows Environment　4
A History of Windows　4
Aspects of Windows　6
Dynamic Linking　8
Windows Programming Options　9
APIs and Memory Models　9
Language Options　10
The Programming Environment　11
API Documentation　12
Your First Windows Program　13
A Character-Mode Model　13
The Windows Equivalent　14
The Header Files　15
Program Entry Point　15
The MessageBox Function　16
Compile, Link, and Run　18
Chapter 2　An Introduction to Unicode　19
A Brief History of Character Sets　20
American Standards　20
The World Beyond　21
Extending ASCII　22
Double-Byte Character Sets　24
Unicode to the Rescue　25
Wide Characters and C　26
The char Data Type　26
Wider Characters　27
Wide-Character Library Functions　28
Maintaining a Single Source　29
Wide Characters and Windows　31
Windows Header File Types　31
The Windows Function Calls　33
Windows?String Functions　34
Using printf in Windows　34
A Formatting Message Box　37
Internationalization and This Book　38
Chapter 3　Windows and Messages　41
A Window of One抯 Own　41
An Architectural Overview　42
The HELLOWIN Program　44
Thinking Globally　47
Registering the Window Class　51
Creating the Window　57
Displaying the Window　59
The Message Loop　60
The Window Procedure　62
Processing the Messages　62
Playing a Sound File　63
The WM_PAINT Message　64
The WM_DESTROY Message　66
The Windows Programming Hurdles　66
Don’t Call Me, I'll Call You　66
Queued and Nonqueued Messages　68
Get In and Out Fast　70
Chapter 4　An Exercise in Text Output　71
Painting and Repainting　72
The WM_PAINT Message　72
Valid and Invalid Rectangles　74
An Introduction to GDI　74
The Device Context　75
Getting a Device Context Handle: Method One　75
The Paint Information Structure　77
Getting a Device Context Handle: Method Two　79
TextOut: The Details　80
The System Font　82
The Size of a Character　82
Text Metrics: The Details　83
Formatting Text　85
Putting It All Together　86
The SYSMETS1.C Window Procedure　94
Not Enough Room　95
The Size of the Client Area　95
Scroll Bars　97
Scroll Bar Range and Position　99
Scroll Bar Messages　100
Scrolling SYSMETS　102
Structuring Your Program for Painting　107
Building a Better Scroll　108
The Scroll Bar Information Functions　108
How Low Can You Scroll?　110
The New SYSMETS　111
But I Don’t Like to Use the Mouse　118
Chapter 5　Basic Drawing　121
The Structure of GDI　121
The GDI Philosophy　121
The GDI Function Calls　123
The GDI Primitives　124
Other Stuff　125
The Device Context　126
Getting a Device Context Handle　126
Getting Device Context Information　128
The DEVCAPS1 Program　129
The Size of the Device　133
Finding Out About Color　138
The Device Context Attributes　140
Saving Device Contexts　142
Drawing Dots and Lines　143
Setting Pixels　143
Straight Lines　144
The Bounding Box Functions　149
Bezier Splines　156
Using Stock Pens　161
Creating, Selecting, and Deleting Pens　162
Filling in the Gaps　165
Drawing Modes　166
Drawing Filled Areas　168
The Polygon Function and the Polygon-Filling Mode　169
Brushing the Interior　174
The GDI Mapping Mode　176
Device Coordinates and Logical Coordinates　177
The Device Coordinate Systems　178
The Viewport and the Window　179
Working with MM_TEXT　181
The Metric Mapping Modes　183
The “Roll Your Own” Mapping Modes　187
The WHATSIZE Program　192
Rectangles, Regions, and Clipping　196
Working with Rectangles　196
Random Rectangles　198
Creating and Painting Regions　202
Clipping with Rectangles and Regions　204
The CLOVER Program　205
Chapter 6　The Keyboard　211
Keyboard Basics　211
Ignoring the Keyboard　212
Who's Got the Focus?　212
Queues and Synchronization　213
Keystrokes and Characters　214
Keystroke Messages　214
System and Nonsystem Keystrokes　215
Virtual Key Codes　216
The lParam Information　219
Shift States　221
Using Keystroke Messages　222
Enhancing SYSMETS for the Keyboard　223
Character Messages　231
The Four Character Messages　232
Message Ordering　233
Control Character Processing　234
Dead-Character Messages　235
Keyboard Messages and Character Sets　236
The KEYVIEW1 Program　236
The Foreign-Language Keyboard Problem　242
Character Sets and Fonts　244
What About Unicode?　255
TrueType and Big Fonts　256
The Caret (Not the Cursor)　263
The Caret Functions　264
The TYPER Program　265
Chapter 7　The Mouse　273
Mouse Basics　274
Some Quick Definitions　274
The Plural of Mouse Is?275
Client-Area Mouse Messages　276
Simple Mouse Processing: An Example　277
Processing Shift Keys　281
Mouse Double-Clicks　283
Nonclient-Area Mouse Messages　284
The Hit-Test Message　285
Messages Beget Messages　286
Hit-Testing in Your Programs　287
A Hypothetical Example　287
A Sample Program　288
Emulating the Mouse with the Keyboard　291
Add a Keyboard Interface to CHECKER　293
Using Child Windows for Hit-Testing　297
Child Windows in CHECKER　297
Child Windows and the Keyboard　303
Capturing the Mouse　309
Blocking Out a Rectangle　309
The Capture Solution　313
The BLOKOUT2 Program　314
The Mouse Wheel　318
Still to Come　326
Chapter 8　The Timer　327
Timer Basics　328
The System and the Timer　328
Timer Messages Are Not Asynchronous　329
Using the Timer: Three Methods　330
Method One　330
Method Two　334
Method Three　337
Using the Timer for a Clock　338
Building a Digital Clock　338
Getting the Current Time　343
Displaying Digits and Colons　344
Going International　344
Building an Analog Clock　346
Using the Timer for a Status Report　351
Chapter 9　Child Window Controls　357
The Button Class　359
Creating the Child Windows　363
The Child Talks to Its Parent　365
The Parent Talks to Its Child　366
Push Buttons　367
Check Boxes　368
Radio Buttons　369
Group Boxes　369
Changing the Button Text　369
Visible and Enabled Buttons　370
Buttons and Input Focus　370
Controls and Colors　371
System Colors　372
The Button Colors　373
The WM_CTLCOLORBTN Message　374
Owner-Draw Buttons　375
The Static Class　382
The Scroll Bar Class　383
The COLORS1 Program　384
The Automatic Keyboard Interface　392
Window Subclassing　393
Coloring the Background　393
Coloring the Scroll Bars and Static Text　394
The Edit Class　395
The Edit Class Styles　398
Edit Control Notification　399
Using the Edit Controls　399
Messages to an Edit Control　400
The Listbox Class　401
List Box Styles　401
Putting Strings in the List Box　402
Selecting and Extracting Entries　403
Receiving Messages from List Boxes　404
A Simple List Box Application　405
Listing Files　409
A head for Windows　411
Chapter 10　Menus and Other Resources　417
Icons, Cursors, Strings, and Custom Resources　418
Adding an Icon to a Program　418
Getting a Handle on Icons　424
Using Icons in Your Program　426
Using Customized Cursors　427
Character String Resources　428
Custom Resources　430
Menus　439
Menu Concepts　440
Menu Structure　440
Defining the Menu　441
Referencing the Menu in Your Program　441
Menus and Messages　442
A Sample Program　445
Menu Etiquette　451
Defining a Menu the Hard Way　452
Floating Popup Menus　453
Using the System Menu　459
Changing the Menu　462
Other Menu Commands　463
An Unorthodox Approach to Menus　464
Keyboard Accelerators　469
Why You Should Use Keyboard Accelerators　469
Some Rules on Assigning Accelerators　470
The Accelerator Table　470
Loading the Accelerator Table　471
Translating the Keystrokes　471
Receiving the Accelerator Messages　472
POPPAD with a Menu and Accelerators　473
Enabling Menu Items　480
Processing the Menu Options　480
Chapter 11　Dialog Boxes　483
Modal Dialog Boxes　484
Creating an “About” Dialog Box　484
The Dialog Box and Its Template　488
The Dialog Box Procedure　491
Invoking the Dialog Box　493
Variations on a Theme　494
A More Complex Dialog Box　497
Working with Dialog Box Controls　505
The OK and Cancel Buttons　507
Avoiding Global Variables　509
Tab Stops and Groups　510
Painting on the Dialog Box　512
Using Other Functions with Dialog Boxes　513
Defining Your Own Controls　513
Modeless Dialog Boxes　520
Differences Between Modal and Modeless Dialog Boxes　521
The New COLORS Program　523
HEXCALC: Window or Dialog Box?　529
The Common Dialog Boxes　538
POPPAD Revisited　538
Unicode File I/O　563
Changing the Font　564
Search and Replace　564
The One-Function-Call Windows Program　565
Chapter 12　The Clipboard　567
Simple Use of the Clipboard　568
The Standard Clipboard Data Formats　568
Memory Allocation　570
Transferring Text to the Clipboard　572
Getting Text from the Clipboard　573
Opening and Closing the Clipboard　574
The Clipboard and Unicode　575
Beyond Simple Clipboard Use　581
Using Multiple Data Items　581
Delayed Rendering　583
Private Data Formats　584
Becoming a Clipboard Viewer　587
The Clipboard Viewer Chain　587
Clipboard Viewer Functions and Messages　587
A Simple Clipboard Viewer　590
下册
Section II　More Graphics
Chapter 13　Using the Printer　597
Printing Fundamentals　598
Printing and Spooling　598
The Printer Device Context　602
The Revised DEVCAPS Program　605
The PrinterProperties Call　615
Checking for BitBlt Capability　616
The Simplest Printing Program　617
Printing Graphics and Text　619
Bare-Bones Printing　622
Canceling Printing with an Abort Procedure　623
How Windows Uses AbortProc　625
Implementing an Abort Procedure　625
Adding a Printing Dialog Box　628
Adding Printing to POPPAD　633
Chapter 14　Bitmaps and Bitblts　641
Bitmap Basics　641
Where Do Bitmaps Come From?　642
Bitmap Dimensions　643
Color and Bitmaps　644
Real-World Devices　 644
Bitmap Support in GDI　647
The Bit-Block Transfer　648
A Simple BitBlt　648
Stretching the Bitmap　652
The StretchBlt Mode　656
The Raster Operations　657
The Pattern Blt　659
The GDI Bitmap Object　662
Creating a DDB　662
The Bitmap Bits　665
The Memory Device Context　666
Loading Bitmap Resources　667
The Monochrome Bitmap Format　671
Brushes from Bitmaps　674
Drawing on Bitmaps　677
The Shadow Bitmap　682
Using Bitmaps in Menus　687
Nonrectangular Bitmap Images　701
Some Simple Animation　707
Bitmaps Outside the Window　711
Chapter 15　The Device-Independent Bitmap　723
The DIB File Format　724
The OS/2-Style DIB　725
Bottoms Up!　728
The DIB Pixel Bits　728
The Expanded Windows DIB　730
Reality Check　733
DIB Compression　 734
Color Masking　737
The Version 4 Header　740
The Version 5 Header　744
Displaying DIB Information　746
Displaying and Printing　755
Digging into the DIB　755
Pixel to Pixel　758
The Topsy-Turvy World of DIBs　769
Sequential Display　777
Stretching to Fit　786
Color Conversion, Palettes, and Performance　797
The Union of DIBs and DDBs　799
Creating a DDB from a DIB　799
From DDB to DIB　808
The DIB Section　808
More DIB Section Differences　817
The File-Mapping Option　818
In Summary　820
Chapter 16　The Palette Manager　821
Using Palettes　821
Video Hardware　822
Displaying Gray Shades　823
The Palette Messages　831
The Palette Index Approach　832
Querying the Palette Support　836
The System Palette　837
Other Palette Functions　837
The Raster-Op Problem　838
Looking at the System Palette　839
Palette Animation　850
The Bouncing Ball　851
One-Entry Palette Animation　859
Engineering Applications　865
Palettes and Real-World Images　870
Palettes and Packed DIBs　870
The All-Purpose Palette　883
The Halftone Palette　890
Indexing Palette Colors　896
Palettes and Bitmap Objects　902
Palettes and DIB Sections　909
A Library for DIBs　915
The DIBSTRUCT Structure　917
The Information Functions　918
Reading and Writing Pixels　927
Creating and Converting　932
The DIBHELP Header File and Macros　946
The DIBBLE Program　949
Simple Palettes; Optimized Palettes　975
Converting Formats　991
Chapter 17　Text and Fonts　997
Simple Text Output　997
The Text Drawing Functions　997
Device Context Attributes for Text　1000
Using Stock Fonts　1002
Background on Fonts　1002
The Types of Fonts　1003
TrueType Fonts　1004
Attributes or Styles?　1005
The Point Size　1005
Leading and Spacing　1005
The Logical Inch Problem　1006
The Logical Font　1007
Logical Font Creation and Selection　1007
The PICKFONT Program　1009
The Logical Font Structure　1026
The Font-Mapping Algorithm　1030
Finding Out About the Font　1031
Character Sets and Unicode　1033
The EZFONT System　1035　　
Font Rotation　1044
Font Enumeration　1046
The Enumeration Functions　1046
The ChooseFont Dialog　1047
Paragraph Formatting　1057
Simple Text Formatting　1058
Working with Paragraphs　1059
Previewing Printer Output　1069
The Fun and Fancy Stuff　1082
The GDI Path　1082
Extended Pens　1083
Four Sample Programs　1088
Chapter 18　Metafiles　1097
The Old Metafile Format　1098
Simple Use of Memory Metafiles　1098
Storing Metafiles on Disk　1101
Old Metafiles and the Clipboard　1102
Enhanced Metafiles　1107
The Basic Procedure　1107
Looking Inside　1111
Metafiles and GDI Objects　1118
Metafiles and Bitmaps　1123
Enumerating the Metafile　1127
Embedding Images　1135
An Enhanced Metafile Viewer and Printer　1139
Displaying Accurate Metafile Images　1150
Scaling and Aspect Ratios　1161
Mapping Modes in Metafiles　1163
Mapping and Playing　1166
Section III　Advanced Topics
Chapter 19　The Multiple-Document Interface　1173
MDI Concepts　1173
The Elements of MDI　1173
MDI Support　1175
A Sample MDI Implementation　1177
Three Menus　1190
Program Initialization　1191
Creating the Children　1192
More Frame Window Message Processing　1193
The Child Document Windows　1194
Cleaning Up　1196
Chapter 20　Multitasking and Multithreading　1197
Modes of Multitasking　1198
Multitasking Under DOS?　1198
Nonpreemptive Multitasking　1198
PM and the Serialized Message Queue　1200
The Multithreading Solution　1200
Multithreaded Architecture　1201
Thread Hassles　1202
The Windows Advantage　1202
New! Improved! Now with Threads!　1203
Windows Multithreading　1204
Random Rectangles Revisited　1205
The Programming Contest Problem　1208
The Multithreaded Solution　1216
Any Problems?　1226
The Benefits of Sleep　1226
Thread Synchronization　1227
The Critical Section　1227
Event Signaling　1229
The BIGJOB1 Program　1230
The Event Object　1235
Thread Local Storage　1240
Chapter 21　Dynamic-Link Libraries　1243
Library Basics　1243
Library: One Word, Many Meanings　1244
A Simple DLL　1245
The Library Entry and Exit Point　1248
The Test Program　1249
Shared Memory in DLLs　1252
The STRPROG Program　1258
Sharing Data Among STRPROG Instances　1264
Miscellaneous DLL Topics　1264
Dynamic Linking Without Imports　1265
Resource-Only Libraries　1266
Chapter 22　Sound and Music　1273
Windows and Multimedia　1273
Multimedia Hardware　1273
An API Overview　1274
Exploring MCI with TESTMCI　1275
MCITEXT and CD Audio　1280
Waveform Audio　1285
Sound and Waveforms　1285
Pulse Code Modulation　1286
The Sampling Rate　1287
The Sample Size　1287
Generating Sine Waves in Software　1288
A Digital Sound Recorder　1299
The MCI Alternative　1312
The MCI Command String Approach　1320
The Waveform Audio File Format　1325
Experimenting with Additive Synthesis　1326
Waking Up to Waveform Audio　1336
MIDI and Music　1345
The Workings of MIDI　1345
The Program Change　1347
The MIDI Channel　1347
MIDI Messages　1349
An Introduction to MIDI Sequencing　1351
Playing a MIDI Synthesizer from the PC Keyboard　1357　
A MIDI Drum Machine　1375
The Multimedia time Functions　1399
RIFF File I/O　1402
Chapter 23　A Taste of the Internet　1405
Windows Sockets　1405
Sockets and TCP/IP　1406
Network Time Services　1406
The NETTIME Program　1407
WinInet and FTP　1421
Overview of the FTP API　1421
The Update Demo　1423
Index　1437
……