搜索


会员资源切换至【手机版】

切换本帖至【手机版】


开启左侧

Windows编程启示录 The Old New Thing: [PDF] 扫描英文版

[复制链接]
发表于 2021-7-27 23:38:33 | 显示全部楼层 |阅读模式

游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0


资源信息:



中文名


: Windows编程启示录


原名


: The Old New Thing:


别名


: Practical Development Throughout the Evolution of Windows


版本


: [PDF] 扫描英文版


发行时间


: 2007年


地区


: 美国


概述


:



中文介绍: Raymond Chen在Micorsoft的Windows开发团队中工作了十余年,他将为您揭开那些有必要知道的“Windows内幕”。 Chen风趣的写作风格、深入的洞察力以及引人深思的幽默,使他成为了世界上最优秀的技术博客作者之一。在本书中,他不仅给我们带来了许多幕后的故事,宝贵的技术建议,还带来了许多启发性的轶事;这些都将帮助您最大程度地理解Windows。 【内容简介】 本书通过一系列短文来讲解Windows基本原理,例如:窗口和对话框的管理机制,如何设计像自动售货机那样有效的用户界面,对性能优化的理解,向后兼容的关键技术细节,Windows程序的安全漏洞,如何使程序更好地在Windows系统中运行等。本书不仅讲解Windows幕后的许多故事、宝贵的技术建议,还包括了许多启发性的轶事,这些都将帮助读者最大程度地理解Windows。. 本书适合于软件开发人员,或对Windows的发展历史有兴趣的读者。 为什么Windows的工作方式是这样的? 为什么“关闭计算机(Shut Down)”选项要放在开始菜单中? 为什么会设计一个“开始(Start)”按钮? 我怎么才能进入到对话框的消息循环中? 为什么GetWindoeText函数会有着奇怪的行为? 为什么注册表文件会被叫作“蜂房”? 如果我们追溯Windows的历史,就会发现在Windows中许多奇怪的事情都有着合乎逻辑的解释。在理解了这些事情之后,你不仅能够获得开发能力的大大提高,同时也能够避免遭受更多的挫折。Remond Chen在Micorsoft的Windows开发团队中工作了十余年,他将为你揭开那些有必要知道的“Windows内幕”。 Chen风趣的写作风格、深入的洞察力以及引人深思的幽默,使他成为了世界上最优秀的技术博客作者之一(博客地址:http://blogs.msdn.com/oldnewthing/)。在本书中,他不仅给我们带来了许多幕后的故事,宝贵的技术建议,还带来了许多启发性的轶事;这些都将帮助你最大程度地理解Windows。.. 在本书中,你将了解以下的内容: ·如何设计像自动售货机那样有效的用户界面。 ·深入理解窗口和对话框的管理机制。 ·为什么性能优化与我们在直觉上的理解很不一样。 ·COM对象和Visual C++编译器的薄弱之处。 ·向后兼容的关键技术细节——Windows的做法以及这样做的原因。 ·大多数开发人员所不知道的Windows程序安全漏洞。 ·如何使你的程序更好地在Windows系统中运行,做一个Windows系统的“良好市民”。... [codebox]Table of Contents Preface xxiii Acknowledgments xxvii About the Author xxix Chapter One: Initial Forays into User Interface Design Why do you have to click the Start button to shut down? 1 Why doesn't Windows have an "expert mode"? 2 The default answer to every dialog box is Cancel 3 The best setting is the one you don't even sense, but it's there, and it works the way you expect 6 In order to demonstrate our superior intellect, we will now ask you a question you cannot answer 7 Why doesn't Setup ask you if you want to keep newer versions of operating system files? 7 Thinking through a feature 9 When do you disable an option, and when do you remove it? 12 When do you put ... after a button or menu? 13 User interface design for vending machines 13 User interface design for interior door locks 15 The evolution of mascara in Windows UI 16 Chapter Two: Selected Reminiscences on Windows 95 Why isn't my time zone highlighted on the world map? 19 Why didn't Windows 95 boot with more than 1GB of memory? 20 Why did Windows 95 have functions called BEAR, BUNNY, and PIGLET? 22 What about BOZOSLIVEHERE and TABTHETEXTOUTFORWIMPS? 23 What was in the Windows 95 Special Edition box? 25 Windows brings out the Rorschach test in everyone 25 The martial arts logon picture 26 Why a really large dictionary is not a good thing 27 An insight into the Windows 95 startup sound 27 It's a lot easier to write a column if you don't care about accuracy 28 Why does the System Properties page round the memory size? 29 Why does my hard drive light flash every few seconds? 29 The hunt for a faster syscall trap 30 One byte used to cost a dollar 31 Each product-support call costs a sale 32 Why isn't Tweak UI included on the Windows CD? 32 Turns out that you can't install Windows via xcopy 34 Buying an entire Egghead Software store 35 The history of the Windows PowerToys 35 How did Windows choose its final build numbers? 38 Why doesn't the build number increment for service packs? 39 Chapter Three: The Secret Life of GetWindowText How windows manage their text 41 Enter GetWindowText 42 What if I don't like these rules? 43 Can you give an example where this makes a difference? 44 Why are the rules for GetWindowText so weird? 44 Chapter Four: The Taskbar and Notification Area Why do some people call the taskbar the "tray"? 47 Why does the taskbar default to the bottom of the screen? 49 Why doesn't the clock in the taskbar display seconds? 50 Why doesn't the taskbar show an analog clock? 51 When I dock my taskbar vertically, why does the word "Start" disappear? 52 Why don't notification icons get a message when the user clicks the "X" button? 52 Chapter Five: Puzzling Interface Issues What are those little overlay icons? 53 Why are these unwanted files/folders opening when I log on? 54 What do the text label colors mean for files? 56 Why does my advanced options dialog say ON and OFF after every option? 57 What determines the order in which icons appear in the Alt+Tab list? 58 Why is the read-only property for folders so strange? 59 What's with those blank taskbar buttons that go away when I click on them? 59 What is the difference between Minimize All and Show Desktop? 60 What does boldface on a menu mean? 62 Where do those customized Web site icons come from? 62 Where did my task manager tabs and buttons go? 63 Will dragging a file result in a move or a copy? 64 Why does the Links folder keep re-creating itself? 65 Why are documents printed out of order when you multiselect and choose Print? 66 Raymond spends the day doing product support 67 Blow the dust out of the connector 68 How much is that gigabyte in the window? 69 Why can't I remove the "For test/evaluation purposes only" tag? 70 Chapter Six: A History of the GlobalAlloc Function The early years 71 Selectors 73 Transitioning to Win32 75 A peek at the implementation 76 Chapter Seven: Short Topics in Windows Programming The scratch program 79 Getting a custom right-click menu for the caption icon 85 What's the difference between CreateMenu and CreatePopupMenu? 86 When does the window manager destroy menus automatically? 88 Painting only when your window is visible onscreen 89 Determining whether your window is covered 93 Using bitmap brushes for tiling effects 95 What is the DC brush good for? 98 Using ExtTextOut to draw solid rectangles 100 Using StretchBlt to draw solid rectangles 102 Displaying a string without those ugly boxes 103 Semaphores don't have owners 110 An auto-reset event is just a stupid semaphore 112 Chapter Eight: Window Management Why do I get spurious WM_MOUSEMOVE messages? 115 Why is there no WM_MOUSEENTER message? 118 The white flash 118 What is the hollow brush for? 119 What's so special about the desktop window? 120 The correct order for disabling and enabling windows 121 A subtlety in restoring the previous window position 122 UI-modality versus code-modality 123 The WM_QUIT message and modality 126 The importance of setting the correct owner for modal UI 129 Interacting with a program that has gone modal 132 A timed MessageBox, the cheap version 133 The scratch window 135 The bonus window bytes at GWLP_USERDATA 136 A timed MessageBox, the better version 136 A timed context menu 138 Why does my window receive messages after it has been destroyed? 139 Chapter Nine: Reminiscences on Hardware Hardware backward compatibility 141 The ghost CD-ROM drives 142 The Microsoft corporate network: 1.7 times worse than hell 143 When vendors insult themselves 144 Defrauding the WHQL driver certification process 145 A twenty-foot-long computer 146 The USB cart of death 147 New device detected: Boeing 747 147 There's an awful lot of overclocking out there 148 Chapter Ten: The Inner Workings of the Dialog Manager On the dialog procedure 151 The evolution of dialog templates 163 Why dialog templates, anyway? 196 How dialogs are created 197 The modal dialog loop 204 Nested dialogs and DS_CONTROL 216 Why do we need a dialog loop, anyway? 224 Why do dialog editors start assigning control IDs with 100? 225 What happens inside DefDlgProc? 226 Never leave focus on a disabled control 228 What happens inside IsDialogMessage? 229 Why is the X button disabled on my message box? 237 Chapter Eleven: General Software Issues Why daylight saving time is nonintuitive 239 Why do timestamps change when I copy files to a floppy? 241 Don't trust the return address 242 Writing a sort comparison function 243 You can read a contract from the other side 245 The battle between pragmatism and purity 249 Optimization is often counterintuitive 250 On a server, paging = death 253 Don't save anything you can recalculate 254 Performance gains at the cost of other components 255 Performances consequences of polling 257 The poor man's way of identifying memory leaks 258 A cache with a bad policy is another name for a memory leak 259 Chapter Twelve: Digging into the Visual C++ Compiler Do you know when your destructors run? 267 The layout of a COM object 272 Adjustor thunks 274 Pointers to member functions are very strange animals 276 What is __purecall? 280 Chapter Thirteen: Backward Compatibility Sometimes an app just wants to crash 283 When programs grovel into undocumented structures 284 Why not just block the applications that rely on undocumented behavior? 286 Why 16-bit DOS and Windows are still with us 288 What's the deal with those reserved filenames such as NUL and CON? 290 Why is a drive letter permitted in front of UNC paths (sometimes)? 292 Do not underestimate the power of the game Deer Hunter 293 Sometimes the bug isn't apparent until late in the game 293 The long and sad story of the Shell Folders key 294 The importance of error code backward compatibility 297 Sure, we do that 298 When programs patch the operating system and mess up 299 The compatibility constraints of even your internal bookkeeping 300 Why does Windows keep your BIOS clock on local time? 301 Bad version number checks 302 The ways people mess up IUnknown::QueryInterface 303 When programs assume that the system will never change, Episode 1 305 When programs assume that the system will never change, Episode 2 306 The decoy Display Control Panel 308 The decoy visual style 309 Chapter Fourteen: Etymology and History What do the letters W and L stand for in WPARAM and LPARAM? 311 Why was nine the maximum number of monitors in Windows 98? 312 Why is a registry file called a hive? 312 The management of memory for resources in 16-bit Windows 312 What is the difference between HINSTANCE and HMODULE? 313 What was the purpose of the hPrevInstance parameter to WinMain? 316 Why is the GlobalWire function called GlobalWire? 317 What was the difference between LocalAlloc and GlobalAlloc? 318 What was the point of the GMEM_SHARE flag? 320 Why do I sometimes see redundant casts before casting to LPARAM? 321 Why do the names of the registry functions randomly end in Ex? 322 What's the difference between SHGetMalloc, SHAlloc, CoGetMalloc, and CoTaskMemAlloc? 324 Why is Windows Error Reporting nicknamed Dr. Watson? 329 What happened to DirectX 4? 330 Why are HANDLE return values so inconsistent? 331 Why do text files end in Ctrl+Z? 333 Why is the line terminator CR+LF? 334 TEXT vs. _TEXT vs. _T, and UNICODE vs. _UNICODE 335 Why are dialog boxes initially created hidden? 335 When you change the insides, nobody notices 336 If FlushInstructionCache doesn't do anything, why do you have to call it? 337 If InitCommonControls doesn't do anything, why do you have to call it? 338 Why did InterlockedIncrement/Decrement only return the sign of the result? 339 Why does the function WSASetLastError exist? 340 Why are there broadcast-based mechanisms in Windows? 340 Where did windows minimize to before the taskbar was invented? 341 Why didn't the desktop window shrink to exclude the taskbar? 343 Why does the caret stop blinking when I tap the Alt key? 343 What is the deal with the ES_OEMCONVERT flag? 345 The story behind file system tunneling 346 Why do NTFS and Explorer disagree on filename sorting? 347 The Date/Time Control Panel is not a calendar 350 How did Windows 95 rebase DLLs? 351 What are SYSTEM_FONT and DEFAULT_GUI_FONT? 353 Why do up-down controls have the arrows backward? 354 A ticket to the Windows 95 launch 355 Chapter Fifteen: How Window Messages Are Delivered and Retrieved Sent and posted messages 358 The life of a sent message 363 The life of a posted message 364 Generated posted messages 365 When does SendMessageCallback call you back? 368 What happens in SendMessageTimeout when a message times out? 369 Applying what you've learned to some message processing myths 370 How can you tell who sent or posted you a message? 371 You can't simulate keyboard input with PostMessage 371 Chapter Sixteen: International Programming Case mapping on Unicode is hard 373 An anecdote about improper case mapping 374 Why you can't rotate text 375 What are these directories called 0409 and 1033? 379 Keep your eye on the code page 379 Why is the default 8-bit codepage called "ANSI"? 388 Why is the default console codepage called "OEM"? 388 Why is the OEM code page often called ANSI? 389 Logical but perhaps surprising consequences of converting between Unicode and ANSI 391 Chapter Seventeen: Security World-writable files 393 Hiding files from Explorer 394 Stealing passwords 395 Silent install of uncertified drivers 396 Your debugging code can be a security hole 397 Why shared sections are a security hole 398 Internet Explorer's Enhanced Security Configuration doesn't trust the intranet 402 Chapter Eighteen: Windows 2000 and Windows XP Why doesn't the new Start menu use Intellimenus in the All Programs list? 403 Why is there no programmatic access to the Start menu pin list? 404 Why does Windows XP Service Pack 2 sometimes forget my CD autoplay settings? 406 The unsafe device removal dialog 407 Two brief reminiscences on the Windows XP Comments? button 408 Why does Explorer eject the CD after you finish burning it? 408 Why does Windows setup lay down a new boot sector? 409 Psychic debugging: Why your expensive four-processor machine is ignoring three of its processors 410 Psychic debugging: Why your CPU usage is hovering at 50% 411 What's the deal with the DS_SHELLFONT flag? 412 Why does DS_SHELLFONT = DS_FIXEDSYS | DS_SETFONT? 413 What other effects does DS_SHELLFONT have on property sheet pages? 414 Chapter Nineteen: Win32 Design Issues Why does Win32 fail a module load if an import could not be resolved? 417 Why are structure sizes checked strictly? 418 Why do I have to return this goofy value for WM_DEVICECHANGE? 421 The arms race between programs and users 422 Why can't you trap TerminateProcess? 424 Why do some processes stay in Task Manager after they've been killed? 424 Understanding the consequences of WAIT_ABANDONED 425 Why can't I put hyperlinks in notification icon balloon tips? 427 Why can't I use the same tree item multiple times? 429 The kooky STRRET structure 429 Why can't you set UTF-8 as your ANSI code page? 431 When should you use a sunken client area? 432 Why is there no all-encompassing superset version of Windows? 433 Why is it even possible to disable the desktop, anyway? 433 What are the window and menu nesting limits? 435 What's the difference between HWND_TOP and HWND_TOPMOST? 435 Chapter Twenty: Taxes Hierarchical Storage Management 438 Geopolitics 439 Remote Desktop Connection and Painting 440 Fast User Switching and Terminal Services 443 Multiple users 444 Roaming user profiles 445 Redirected folders 447 My Documents vs. Application Data 450 Large address spaces 451 Power management and detecting battery power 455 Intermittent network connectivity 457 Anti-aliased fonts and ClearType 459 High DPI displays 462 Multiple monitors 467 The work area 470 Displaying your pop-up windows in the right place 471 Accessibility 472 Chapter Twenty-One: Silliness The much-misunderstood "nop" action 481 Don't let Marketing mess with your slides 482 Whimsical bug reports 482 Watch out for those sample URLs 483 No code is an island 484 But I have Visual Basic Professional 485 It's all about the translucent plastic 485 My first death threat 486 You can't escape those AOL CDs 487 Giving fair warning before plugging in your computer 487 Spider Solitaire unseats the reigning champion 488 There's something about Rat Poker 489 Be careful what you name your product group 490 The psychology of naming your internal distribution lists 490 Differences between managers and programmers 491 Using floppy disks as semaphore tokens 492 When a token changes its meaning midstream 492 Whimsical embarrassment as a gentle form of reprimand 493 Using a physical object as a reminder 494 The office disco party 495 The Halloween-themed lobby 495 Index 497 [/codebox] 杀毒情况: 安全检测软件软件:Windows Live OneCare 2.0.2284.22 版本号:Virus and Spyware Definition Version 1.20.2826.4 Firewall Policy Version 1.2.23.91 常驻:荷兰DonkeySever No1~3

主题推广




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

切换至【手机版】| 主站| Archiver|

JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!

|网站地图

GMT+8, 2026-3-23 22:06 , Processed in 0.276081 second(s), 121 queries .

 

快速回复 返回顶部 返回列表