Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows

Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Chen R.) ,
2007-08
版次: 1
ISBN: 9787111219194
定价: 49.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 335页
115人买过
  •   《Windows编程启示录》通过一系列短文来讲解windows基本原理,例如:窗口和对话框的管理机制,如何设计像自动售货机那样有效的用户界面,对性能优化的理解,向后兼容的关键技术细节,Windows程序的安全漏洞,如何使程序更好地在Windows系统中运行等。《Windows编程启示录》不仅讲解Windows幕后的许多故事、宝贵的技术建议,还包括了许多启发性的轶事,这些都将帮助读者最大程度地理解Windows。《Windows编程启示录》适合于软件开发人员,或对Windows的发展历史有兴趣的读者。   RaymondChen是微软公司Windows部门的一位软件工程师。他的博客“TheOldNewThng”主要讨论Windows发展历史以及Win32编程。他还为TechNet杂志撰写WineowsConfidential专栏。
      译者简介
      聂雪军,2002年起从事软件开发工作,主要开发语言为C++,具有较丰富的Windows和Linux开发经验。译作有《C++编程风格》、《ExceptionalC++中文版》等。 译者序
    前言
    第1章用户界面设计初探
    为什么要单击“开始(Start)”按钮来关机?
    为什么Windows没有“专家模式”?
    对话框的默认按钮是“取消”
    最好的设置是:即使你没有意识到这些设置的存在,但它们依然按照你所期望的方式在工作。
    为了显示我们超群的智慧,现在就来问一个你回答不了的问题
    为什么安装程序不会问你是否希望保留操作系统文件的新版本?
    功能设计的思考
    什么时候应该禁止选项,而什么时候又该删除选项?
    什么时候应该将“…”放在按钮或者菜单项的后面?
    自动售货机的用户界面设计
    室内门锁的用户界面设计
    Windows界面中“睫毛膏”的演变

    第2章Windows95的精选回忆录
    为什么在世界地图中,当前时区没有被加亮显示?
    为什么当内存超过1G时,Windows95无法启动?
    为什么在Windows95中有些函数叫作BEAR,BUNNY和PIGLET?
    BOZOSLIVEHERE和TABTHETEXTTOUTFORWINMPS表示什么含义?
    在Windows95特别版的包装盒中都有些什么东西?
    Windows引出了每个人的罗尔沙赫氏测试
    登录时的武术图片
    为什么一个非常大的词典反而是不好的?
    了解Windows95的启动声音
    如果你不在意正确性的话,那么编写一个专栏是非常容易的
    为什么在系统属性页中对内存大小进行了取整?
    为什么硬盘的指示灯每隔几秒钟闪一下?
    寻求更快的系统陷阱
    一个字节曾经价值一美元
    每个产品支持电话的费用相当于卖出一个Windows拷贝
    为什么在Windows的光盘中没有包含TweakUI?
    不能通过xcopy来安装Windows
    买下一个Egghead软件商店
    WindowsPowerToy的历史故事
    Windows是如何选择最终构建编号?
    为什么在安装系统补丁包时,系统的构建编号不会增加?

    第3章GetWindowText的秘密
    窗口是如何管理文本的?
    深入GetWindowText函数
    如果我不喜欢这些规则,那该怎么办?
    能否给出一个说明这种差异的示例程序?
    为什么GetWindowText的规则如此奇怪?

    第4章任务栏与通知区域
    为什么有些人把任务栏叫作“托盘”?
    为什么任务栏默认是在屏幕的底部?
    为什么在任务栏中的时钟并不显示秒?
    为什么在任务栏中不显示模拟时钟?
    当任务栏竖直停靠时,为什么“开始”按钮上的文本消失了?
    为什么当用户点击“X”按钮,通知图标不会得到一个消息?

    第5章令人困惑的界面问题
    那些小小的覆盖图标是什么?
    为什么当我登录的时候,有些我不希望看到的文件/文件夹会自动打开?
    对文件来说,文件名字体的颜色代表什么含义?
    为什么在高级选项对话框中,在每个选项后面都会加上“开”或者“关”?
    是什么决定了Alt+Tab中图标的顺序?
    为什么文件夹的只读属性非常奇怪?
    当我点击空白的任务栏按钮时,这些按钮消失了,发生了什么事?
    “最小化所有窗口”和“显示桌面”之间的区别是什么?
    在菜单中的粗体文本表示什么含义?
    自定义的网页图标是从何而来的?
    任务管理器的标签和按钮到哪里去了?
    拖动一个文件是表示移动还是复制?
    为什么“链接”文件夹总是会不断地自我创建?
    为什么当你同时选择多个文档进行打印时,文档的打印顺序是乱的?
    我在产品支持部门的一天
    吹掉连接器上的灰尘
    1G字节到底有多少?
    为什么不能删除“仅用于测试/评估”的标记?

    第6章GLOBALALLOC函数的历史
    从前的故事
    选择符
    过渡到Win32
    实现一瞥

    第7章Windows编程中的一些话题
    “临时”程序
    获得在标题图标中的自定义右键菜单
    CreateMenu与CreatePopupMenu有什么区别?
    为什么窗口管理器会自动销毁菜单?
    仅当窗口在屏幕上可见时才进行绘制。
    判断窗口是否被覆盖了?
    用位图刷来实现平铺效果
    DC画刷的好处是什么?
    用ExtTextOut函数来绘制实心矩形
    用StretchBlt函数来绘制实心矩形
    在显示字符串时去掉那些难看的方框
    没有所有者的信号量
    自动复位的事件只是一个愚蠢的信号量

    第8章窗口管理
    为什么会收到伪WM_MOUSEMOVE消息?
    为什么没有WM_MOUSEENTER消息?
    白屏
    空心画刷的作用是什么?
    桌面窗口的有什么特殊的地方?
    禁止窗口和激活窗口的正确顺序。
    在恢复窗口位置时的问题。
    界面模态与代码模态
    WM_QUIT消息与模态
    为模态界面设置正确的所有者窗口
    与进入到模态的程序进行交互
    定时消息框的简单版本
    临时窗口
    在GWLP_USERDATA中的附加窗口数据
    定时消息框的改进版本
    定时右键菜单
    为什么窗口在被销毁之后还会收到消息?

    第9章关于硬件的回忆录
    硬件的向后兼容性
    光驱
    微软公司的网络:比“地狱”差1.7倍
    有时候制造商会侮辱他们自己?
    欺骗WHQL的驱动程序认证过程
    20英尺长的计算机
    USB手推车
    检测到了新设备:波音747
    超频带来的问题

    第10章对话框管理器的内部工作机制
    关于对话框过程
    对话框过程的返回值
    一种不同类型的对话框过程。
    另一种不同类型的对话框过程
    对话框模板的发展
    经典的16位模板
    经典的32位模板
    16位扩展模板
    32位扩展模板
    小结
    为什么需要对话框模板?
    对话框是如何创建的
    对话框创建的准备工作
    创建框架窗口
    创建控件
    模态对话框的消息循环
    基本的对话框消息循环
    为什么要按照这种方式来构造对话框消息循环?
    将非模态对话框转换为模态对话框
    消息循环中的微妙问题
    消息循环中其他的微妙问题
    对话框中的自定义导航
    对话框中的自定义快捷键
    嵌套对话框以及DS_CONTROL
    “启动器”工具
    根据内部对话框来调整大小
    为什么需要对话框循环?
    为什么对话框编辑器从100开始设置控件的ID?
    在DefDlgProc函数中做了哪些操作工作?
    如何在对话框中设置焦点
    为什么SetFocus函数不会管理默认的ID?
    不要将焦点设置在被禁止的控件上
    在IsDialogMessage中做了什么工作?
    用Tab键来在非对话框中导航
    对话框的“默认ID”是什么?
    如何使用WM_GETDLGCODE消息
    在IsDialogMessage中做了什么工作?
    为什么有些消息框中的X按钮是被禁止?

    第11章常见的软件问题
    为什么夏令时与我们的直觉不同?
    为什么当文件被复制到软盘时,文件的时间戳将发生改变?
    不要相信返回地址
    编写排序比较函数
    你可以从另一边来理解契约
    实用主义和纯粹主义之间的争论
    优化通常是违背直觉的
    在服务器上,分页=死机
    不要保存任何能够重新计算的结果
    增加其他组件的开销来提升性能
    轮循的性能问题
    检测内存泄漏的简单方法
    不好的缓冲策略将导致内存泄漏

    第12章深入研究VisualC++编译器
    析构函数在什么时候调用?
    COM对象的布局
    调节转换器
    指向成员函数的指针是非常奇怪的
    什么是__purecall?

    第13章向后兼容性
    有些应用程序的本意就是程序崩溃
    当程序使用那些未正式公布的结构时
    为什么不禁止那些使用了未正式公布行为的程序?
    为什么16位DOS和16位Windows仍然存在
    对于像NUL和CON这样的保留文件名该如何处理?
    为什么(有时候)在UNC路径前面是一个驱动器盘符?
    不要轻视“猎鹿者”这个游戏的威力
    有时候,游戏中的错误只有在玩了一段时间后才会显现出来
    ShellFolders键的故事
    保持错误码的向后兼容性是很重要的
    没错,我们实现了这个功能
    有些程序在为操作系统打补丁时将陷入困境
    即使在内部数据结果中也存在着兼容性问题
    为什么Windows让BIOS时间保持为本地时间。
    版本号的检测
    破坏IUnknown::QueryInterface的几种方式
    当程序假设系统永远不会发生改变——之一
    当程序假设系统永远不会发生改变——之二
    伪显示控制面板
    伪可视化风格

    第14章一些名字的来源和历史
    在WPARAM和LPARAM中,字母W和L分布表示什么意思?
    为什么在Windows98中,显示器的最大数量是9?
    为什么注册表文件被叫作蜂房?
    16位Windows中对资源的内存管理
    HINSTANCE和HMODULE之间的区别是什么?
    在WinMain函数中,hPrevInstance参数的作用是什么?
    为什么GlobalWire函数被叫作这个名字?
    LocalAlloc和GlobalAlloc之间的区别是什么?
    GMEM_SHARE标志的作用是什么?
    为什么在转换到LPARAM之前会进行一个多余的转换?
    为什么有些注册表函数的名字以Ex结尾?
    SHGetMalloc,SHAlloc和CoGetMalloc之间的区别是什么?
    为什么Windows错误报告程序的昵称是Dr.Warson?
    DirectX4出了什么问题?
    为什么HANDLE类型的返回值是很不一致的?
    为什么文本文件是以Ctrl+Z来结束的?
    为什么行结束符是CR+LF?
    TEXT,__TEXT与__T和UNICODE与__UNICODE
    为什么对话框在初始创建的时候是隐藏的?
    当程序在内部进行修改时,没有人会注意
    如果FlushInstructionCache没有做任何事情,那么为什么还要调用这个函数?
    如果InitCommonControls没有做任何事情,那么为什么还要调用这个函数?
    为什么InterlockedIncrement/InterlockedDecrement这两个函数只是返回结果的符号?
    为什么会有一个WSASetLastError函数?
    为什么在Windows中使用了基于广播的机制?
    在任务栏出现之前,窗口最小化之后被放到了什么地方?
    为什么在计算桌面窗口大小时会把任务栏也包含在内?
    为什么在按下Alt键时,光标将停止闪烁?
    ES_OEMCONVERT风格的作用是什么?
    隐藏在文件系统隧道后面的故事
    为什么NTFS和资源管理器在对文件名进行排序时是不一致的?
    日期/时间控制面板并不是日历
    Windows95如何来重新设定DLL的加载基址?
    SYSTEM_FONT和DEFAULT_GUI_FONT是什么字体?
    为什么上下控件中的箭头是相反的?
    Windows95发布会的门票

    第15章窗口消息的发送与接收
    发送消息和投递消息
    发送消息的生命期
    投递消息的生命期
    生成的投递消息
    SendMessageCallback将在什么时候调用回调函数?
    当消息超时后,SendMessageTimeout函数将会执行什么操作?
    澄清一些关于消息处理的谬论
    如何知道消息的发送者/投递者?
    不能用PostMessage来模拟键盘输入

    第16章国际化编程
    在Unicode上进行大小写映射是很困难的
    关于错误大小写映射的趣事
    为什么不能旋转文字?
    0409和1033是些什么目录?
    注意编码页
    为什么默认的8比特编码页被叫作“ANSI”?
    为什么默认的控制台编码页被叫作“OEM”?
    为什么OEM编码页经常被叫作ANSI?
    在Unicode和ANSI之间的转换结果是合理的但也是奇怪的

    第17章安全
    所有用户都可以写入的文件
    在资源管理器中隐藏文件
    窃取密码
    未验证驱动程序的静默安装
    调试代码可能是一个安全漏洞
    为什么共享数据段是一个安全漏洞
    IE的增强安全配置并不信任内部网络

    第18章Windows2000和WindowsXP
    为什么在XP开始菜单的“所有程序”列表中没有智能菜单?
    为什么没有可以访问开始菜单中快速启动列表的函数接口?
    为什么WindowsXPServicePack2有时候会忘记CD自动播放设置?
    不安全设备删除对话框
    关于WindowsXP中建议?按钮的两段回忆
    为什么资源管理在刻录完光盘之后会把光盘弹出来?
    为什么Windows安装程序会生成新的启动扇区?
    超自然力调试法:为什么在四处理器的机器中有三个处理器没有发挥作用
    超自然力调试法:为什么CPU使用率总在50%上下徘徊
    DS_SHELLFONT标志的作用是什么?
    为什么DS_SHELLFONT=DS_FIXEDSYS|DS_SETFONT?
    DS_SHELLFONT在属性页上的效果是什么?

    第19章Win32中的设计问题
    为什么在无法解析某个导入函数时,Win32不能加载这个模块?
    为什么要仔细检查结构的大小?
    为什么必须为了WM_DEVICECHANGE返回这个奇怪的值?
    程序和用户之间的战争
    为什么不能截获TerminateProces函数调用?
    为什么有些进程在被终止之后还停留在任务管理器中?
    理解WAIT_ABANDONED所带来的结果
    为什么不能将超链接放在通知图标气球提示中?
    为什么在树型控件中不能多次使用同一个节点?
    奇怪的STRRET结构
    为什么不能将UTF-8设置为系统的ANSI编码页?
    什么时候应该使用下沉的客户区?
    为什么没有包罗万象的Windows版本?
    为什么禁止桌面窗口也是可能的?
    窗口和菜单的嵌套限制分别是多少?
    HWND_TOP和HWND_TOPMOST之间的区别是什么?

    第20章“税收”
    层次存储管理
    地缘政治学
    远处桌面连接与绘制
    快速用户切换和终端服务
    多用户
    漫游用户配置文件
    重定向文件夹
    “我的文档”与“应用程序数据”
    大地址空间
    电源管理和检测电池的电量
    间歇性的网络连接
    反走样字体和ClearType技术
    高DPI显示
    多显示器
    工作区
    在正确的位置上显示弹出窗口
    辅助功能

    第21章一些可笑的故事
    非常容易误解的“空”操作
    不要让市场部门搞乱你的幻灯片
    异想天开的错误报告
    小心这些示例URL
    任何代码都不是孤立的
    我在ViusalBasic方面很专业
    半透明的塑料
    我遭遇的第一次死亡威胁
    你无法摆开这些AOLCD
    在接入电脑的电源之前给出严正的警告
    蜘蛛纸牌不再排名第一
    关于RedPoker的一些事情
    注意产品小组的名字
    分发列表的命名心理学
    经理和程序员之间的区别
    用软驱作为信号量
    当一个标志中途改变了所代表的含义
    把异想天开的尴尬作为一种温和的指责方式
    用物理对象来作为提醒
    办公室里的迪士高舞会
    万圣节主题的大厅
  • 内容简介:
      《Windows编程启示录》通过一系列短文来讲解windows基本原理,例如:窗口和对话框的管理机制,如何设计像自动售货机那样有效的用户界面,对性能优化的理解,向后兼容的关键技术细节,Windows程序的安全漏洞,如何使程序更好地在Windows系统中运行等。《Windows编程启示录》不仅讲解Windows幕后的许多故事、宝贵的技术建议,还包括了许多启发性的轶事,这些都将帮助读者最大程度地理解Windows。《Windows编程启示录》适合于软件开发人员,或对Windows的发展历史有兴趣的读者。
  • 作者简介:
      RaymondChen是微软公司Windows部门的一位软件工程师。他的博客“TheOldNewThng”主要讨论Windows发展历史以及Win32编程。他还为TechNet杂志撰写WineowsConfidential专栏。
      译者简介
      聂雪军,2002年起从事软件开发工作,主要开发语言为C++,具有较丰富的Windows和Linux开发经验。译作有《C++编程风格》、《ExceptionalC++中文版》等。
  • 目录:
    译者序
    前言
    第1章用户界面设计初探
    为什么要单击“开始(Start)”按钮来关机?
    为什么Windows没有“专家模式”?
    对话框的默认按钮是“取消”
    最好的设置是:即使你没有意识到这些设置的存在,但它们依然按照你所期望的方式在工作。
    为了显示我们超群的智慧,现在就来问一个你回答不了的问题
    为什么安装程序不会问你是否希望保留操作系统文件的新版本?
    功能设计的思考
    什么时候应该禁止选项,而什么时候又该删除选项?
    什么时候应该将“…”放在按钮或者菜单项的后面?
    自动售货机的用户界面设计
    室内门锁的用户界面设计
    Windows界面中“睫毛膏”的演变

    第2章Windows95的精选回忆录
    为什么在世界地图中,当前时区没有被加亮显示?
    为什么当内存超过1G时,Windows95无法启动?
    为什么在Windows95中有些函数叫作BEAR,BUNNY和PIGLET?
    BOZOSLIVEHERE和TABTHETEXTTOUTFORWINMPS表示什么含义?
    在Windows95特别版的包装盒中都有些什么东西?
    Windows引出了每个人的罗尔沙赫氏测试
    登录时的武术图片
    为什么一个非常大的词典反而是不好的?
    了解Windows95的启动声音
    如果你不在意正确性的话,那么编写一个专栏是非常容易的
    为什么在系统属性页中对内存大小进行了取整?
    为什么硬盘的指示灯每隔几秒钟闪一下?
    寻求更快的系统陷阱
    一个字节曾经价值一美元
    每个产品支持电话的费用相当于卖出一个Windows拷贝
    为什么在Windows的光盘中没有包含TweakUI?
    不能通过xcopy来安装Windows
    买下一个Egghead软件商店
    WindowsPowerToy的历史故事
    Windows是如何选择最终构建编号?
    为什么在安装系统补丁包时,系统的构建编号不会增加?

    第3章GetWindowText的秘密
    窗口是如何管理文本的?
    深入GetWindowText函数
    如果我不喜欢这些规则,那该怎么办?
    能否给出一个说明这种差异的示例程序?
    为什么GetWindowText的规则如此奇怪?

    第4章任务栏与通知区域
    为什么有些人把任务栏叫作“托盘”?
    为什么任务栏默认是在屏幕的底部?
    为什么在任务栏中的时钟并不显示秒?
    为什么在任务栏中不显示模拟时钟?
    当任务栏竖直停靠时,为什么“开始”按钮上的文本消失了?
    为什么当用户点击“X”按钮,通知图标不会得到一个消息?

    第5章令人困惑的界面问题
    那些小小的覆盖图标是什么?
    为什么当我登录的时候,有些我不希望看到的文件/文件夹会自动打开?
    对文件来说,文件名字体的颜色代表什么含义?
    为什么在高级选项对话框中,在每个选项后面都会加上“开”或者“关”?
    是什么决定了Alt+Tab中图标的顺序?
    为什么文件夹的只读属性非常奇怪?
    当我点击空白的任务栏按钮时,这些按钮消失了,发生了什么事?
    “最小化所有窗口”和“显示桌面”之间的区别是什么?
    在菜单中的粗体文本表示什么含义?
    自定义的网页图标是从何而来的?
    任务管理器的标签和按钮到哪里去了?
    拖动一个文件是表示移动还是复制?
    为什么“链接”文件夹总是会不断地自我创建?
    为什么当你同时选择多个文档进行打印时,文档的打印顺序是乱的?
    我在产品支持部门的一天
    吹掉连接器上的灰尘
    1G字节到底有多少?
    为什么不能删除“仅用于测试/评估”的标记?

    第6章GLOBALALLOC函数的历史
    从前的故事
    选择符
    过渡到Win32
    实现一瞥

    第7章Windows编程中的一些话题
    “临时”程序
    获得在标题图标中的自定义右键菜单
    CreateMenu与CreatePopupMenu有什么区别?
    为什么窗口管理器会自动销毁菜单?
    仅当窗口在屏幕上可见时才进行绘制。
    判断窗口是否被覆盖了?
    用位图刷来实现平铺效果
    DC画刷的好处是什么?
    用ExtTextOut函数来绘制实心矩形
    用StretchBlt函数来绘制实心矩形
    在显示字符串时去掉那些难看的方框
    没有所有者的信号量
    自动复位的事件只是一个愚蠢的信号量

    第8章窗口管理
    为什么会收到伪WM_MOUSEMOVE消息?
    为什么没有WM_MOUSEENTER消息?
    白屏
    空心画刷的作用是什么?
    桌面窗口的有什么特殊的地方?
    禁止窗口和激活窗口的正确顺序。
    在恢复窗口位置时的问题。
    界面模态与代码模态
    WM_QUIT消息与模态
    为模态界面设置正确的所有者窗口
    与进入到模态的程序进行交互
    定时消息框的简单版本
    临时窗口
    在GWLP_USERDATA中的附加窗口数据
    定时消息框的改进版本
    定时右键菜单
    为什么窗口在被销毁之后还会收到消息?

    第9章关于硬件的回忆录
    硬件的向后兼容性
    光驱
    微软公司的网络:比“地狱”差1.7倍
    有时候制造商会侮辱他们自己?
    欺骗WHQL的驱动程序认证过程
    20英尺长的计算机
    USB手推车
    检测到了新设备:波音747
    超频带来的问题

    第10章对话框管理器的内部工作机制
    关于对话框过程
    对话框过程的返回值
    一种不同类型的对话框过程。
    另一种不同类型的对话框过程
    对话框模板的发展
    经典的16位模板
    经典的32位模板
    16位扩展模板
    32位扩展模板
    小结
    为什么需要对话框模板?
    对话框是如何创建的
    对话框创建的准备工作
    创建框架窗口
    创建控件
    模态对话框的消息循环
    基本的对话框消息循环
    为什么要按照这种方式来构造对话框消息循环?
    将非模态对话框转换为模态对话框
    消息循环中的微妙问题
    消息循环中其他的微妙问题
    对话框中的自定义导航
    对话框中的自定义快捷键
    嵌套对话框以及DS_CONTROL
    “启动器”工具
    根据内部对话框来调整大小
    为什么需要对话框循环?
    为什么对话框编辑器从100开始设置控件的ID?
    在DefDlgProc函数中做了哪些操作工作?
    如何在对话框中设置焦点
    为什么SetFocus函数不会管理默认的ID?
    不要将焦点设置在被禁止的控件上
    在IsDialogMessage中做了什么工作?
    用Tab键来在非对话框中导航
    对话框的“默认ID”是什么?
    如何使用WM_GETDLGCODE消息
    在IsDialogMessage中做了什么工作?
    为什么有些消息框中的X按钮是被禁止?

    第11章常见的软件问题
    为什么夏令时与我们的直觉不同?
    为什么当文件被复制到软盘时,文件的时间戳将发生改变?
    不要相信返回地址
    编写排序比较函数
    你可以从另一边来理解契约
    实用主义和纯粹主义之间的争论
    优化通常是违背直觉的
    在服务器上,分页=死机
    不要保存任何能够重新计算的结果
    增加其他组件的开销来提升性能
    轮循的性能问题
    检测内存泄漏的简单方法
    不好的缓冲策略将导致内存泄漏

    第12章深入研究VisualC++编译器
    析构函数在什么时候调用?
    COM对象的布局
    调节转换器
    指向成员函数的指针是非常奇怪的
    什么是__purecall?

    第13章向后兼容性
    有些应用程序的本意就是程序崩溃
    当程序使用那些未正式公布的结构时
    为什么不禁止那些使用了未正式公布行为的程序?
    为什么16位DOS和16位Windows仍然存在
    对于像NUL和CON这样的保留文件名该如何处理?
    为什么(有时候)在UNC路径前面是一个驱动器盘符?
    不要轻视“猎鹿者”这个游戏的威力
    有时候,游戏中的错误只有在玩了一段时间后才会显现出来
    ShellFolders键的故事
    保持错误码的向后兼容性是很重要的
    没错,我们实现了这个功能
    有些程序在为操作系统打补丁时将陷入困境
    即使在内部数据结果中也存在着兼容性问题
    为什么Windows让BIOS时间保持为本地时间。
    版本号的检测
    破坏IUnknown::QueryInterface的几种方式
    当程序假设系统永远不会发生改变——之一
    当程序假设系统永远不会发生改变——之二
    伪显示控制面板
    伪可视化风格

    第14章一些名字的来源和历史
    在WPARAM和LPARAM中,字母W和L分布表示什么意思?
    为什么在Windows98中,显示器的最大数量是9?
    为什么注册表文件被叫作蜂房?
    16位Windows中对资源的内存管理
    HINSTANCE和HMODULE之间的区别是什么?
    在WinMain函数中,hPrevInstance参数的作用是什么?
    为什么GlobalWire函数被叫作这个名字?
    LocalAlloc和GlobalAlloc之间的区别是什么?
    GMEM_SHARE标志的作用是什么?
    为什么在转换到LPARAM之前会进行一个多余的转换?
    为什么有些注册表函数的名字以Ex结尾?
    SHGetMalloc,SHAlloc和CoGetMalloc之间的区别是什么?
    为什么Windows错误报告程序的昵称是Dr.Warson?
    DirectX4出了什么问题?
    为什么HANDLE类型的返回值是很不一致的?
    为什么文本文件是以Ctrl+Z来结束的?
    为什么行结束符是CR+LF?
    TEXT,__TEXT与__T和UNICODE与__UNICODE
    为什么对话框在初始创建的时候是隐藏的?
    当程序在内部进行修改时,没有人会注意
    如果FlushInstructionCache没有做任何事情,那么为什么还要调用这个函数?
    如果InitCommonControls没有做任何事情,那么为什么还要调用这个函数?
    为什么InterlockedIncrement/InterlockedDecrement这两个函数只是返回结果的符号?
    为什么会有一个WSASetLastError函数?
    为什么在Windows中使用了基于广播的机制?
    在任务栏出现之前,窗口最小化之后被放到了什么地方?
    为什么在计算桌面窗口大小时会把任务栏也包含在内?
    为什么在按下Alt键时,光标将停止闪烁?
    ES_OEMCONVERT风格的作用是什么?
    隐藏在文件系统隧道后面的故事
    为什么NTFS和资源管理器在对文件名进行排序时是不一致的?
    日期/时间控制面板并不是日历
    Windows95如何来重新设定DLL的加载基址?
    SYSTEM_FONT和DEFAULT_GUI_FONT是什么字体?
    为什么上下控件中的箭头是相反的?
    Windows95发布会的门票

    第15章窗口消息的发送与接收
    发送消息和投递消息
    发送消息的生命期
    投递消息的生命期
    生成的投递消息
    SendMessageCallback将在什么时候调用回调函数?
    当消息超时后,SendMessageTimeout函数将会执行什么操作?
    澄清一些关于消息处理的谬论
    如何知道消息的发送者/投递者?
    不能用PostMessage来模拟键盘输入

    第16章国际化编程
    在Unicode上进行大小写映射是很困难的
    关于错误大小写映射的趣事
    为什么不能旋转文字?
    0409和1033是些什么目录?
    注意编码页
    为什么默认的8比特编码页被叫作“ANSI”?
    为什么默认的控制台编码页被叫作“OEM”?
    为什么OEM编码页经常被叫作ANSI?
    在Unicode和ANSI之间的转换结果是合理的但也是奇怪的

    第17章安全
    所有用户都可以写入的文件
    在资源管理器中隐藏文件
    窃取密码
    未验证驱动程序的静默安装
    调试代码可能是一个安全漏洞
    为什么共享数据段是一个安全漏洞
    IE的增强安全配置并不信任内部网络

    第18章Windows2000和WindowsXP
    为什么在XP开始菜单的“所有程序”列表中没有智能菜单?
    为什么没有可以访问开始菜单中快速启动列表的函数接口?
    为什么WindowsXPServicePack2有时候会忘记CD自动播放设置?
    不安全设备删除对话框
    关于WindowsXP中建议?按钮的两段回忆
    为什么资源管理在刻录完光盘之后会把光盘弹出来?
    为什么Windows安装程序会生成新的启动扇区?
    超自然力调试法:为什么在四处理器的机器中有三个处理器没有发挥作用
    超自然力调试法:为什么CPU使用率总在50%上下徘徊
    DS_SHELLFONT标志的作用是什么?
    为什么DS_SHELLFONT=DS_FIXEDSYS|DS_SETFONT?
    DS_SHELLFONT在属性页上的效果是什么?

    第19章Win32中的设计问题
    为什么在无法解析某个导入函数时,Win32不能加载这个模块?
    为什么要仔细检查结构的大小?
    为什么必须为了WM_DEVICECHANGE返回这个奇怪的值?
    程序和用户之间的战争
    为什么不能截获TerminateProces函数调用?
    为什么有些进程在被终止之后还停留在任务管理器中?
    理解WAIT_ABANDONED所带来的结果
    为什么不能将超链接放在通知图标气球提示中?
    为什么在树型控件中不能多次使用同一个节点?
    奇怪的STRRET结构
    为什么不能将UTF-8设置为系统的ANSI编码页?
    什么时候应该使用下沉的客户区?
    为什么没有包罗万象的Windows版本?
    为什么禁止桌面窗口也是可能的?
    窗口和菜单的嵌套限制分别是多少?
    HWND_TOP和HWND_TOPMOST之间的区别是什么?

    第20章“税收”
    层次存储管理
    地缘政治学
    远处桌面连接与绘制
    快速用户切换和终端服务
    多用户
    漫游用户配置文件
    重定向文件夹
    “我的文档”与“应用程序数据”
    大地址空间
    电源管理和检测电池的电量
    间歇性的网络连接
    反走样字体和ClearType技术
    高DPI显示
    多显示器
    工作区
    在正确的位置上显示弹出窗口
    辅助功能

    第21章一些可笑的故事
    非常容易误解的“空”操作
    不要让市场部门搞乱你的幻灯片
    异想天开的错误报告
    小心这些示例URL
    任何代码都不是孤立的
    我在ViusalBasic方面很专业
    半透明的塑料
    我遭遇的第一次死亡威胁
    你无法摆开这些AOLCD
    在接入电脑的电源之前给出严正的警告
    蜘蛛纸牌不再排名第一
    关于RedPoker的一些事情
    注意产品小组的名字
    分发列表的命名心理学
    经理和程序员之间的区别
    用软驱作为信号量
    当一个标志中途改变了所代表的含义
    把异想天开的尴尬作为一种温和的指责方式
    用物理对象来作为提醒
    办公室里的迪士高舞会
    万圣节主题的大厅
查看详情
系列丛书 / 更多
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
OpenCV 3计算机视觉:Python语言实现(原书第2版)
[爱尔兰]乔·米尼奇诺(JoeMinichino) 著;[爱尔兰]乔·米尼奇诺(JoeMinichino) 编;刘波苗贝贝史斌 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
OpenGL ES 3.0编程指南
Dan、Budi、Dave Shreine 著;姚军 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
精彩绝伦的Android UI设计:响应式用户界面与设计模式
Juhani Lehtimaki 著;王东明 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
Python编程实战:运用设计模式、并发和程序库创建高质量程序
[美]Mark Summerfield 著;爱飞翔 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
OpenGL编程指南(原书第9版)
王锐 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
HTML5 Canvas核心技术:图形、动画与游戏开发
[美]David Geary 著
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
华章程序员书库:OpenGL编程指南(原书第8版)
[美]施莱尔(Dave Shreiner)、Graham、John Kessenich 著;王锐 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
iPad应用开发实践指南
[美]Kirby、[美]Tom Harrington 著;张菲 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
领域特定语言
[英]Martin Fowler 著;Thought Works 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
SOA与Java:用Java技术实现面向服务
[美]Thomas、[印]Andre、[美]Satadru、[英]Philip Thomas 著;赵利通 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
Android游戏开发实践指南
[美]Rick Rogers 著;爱飞翔 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
深入理解OpenCV:实用计算机视觉项目解析
[巴西]Daniel Lélis Baggio 著;刘波 译
您可能感兴趣 / 更多
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
无辜者的谎言(相信我!看到结局你一定会头皮发麻;全美读者推荐的悬疑神作,GOODREADS高分作品)
[美]A.R.托雷 著;梁颂宇 译;星文文化 出品
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
哲学、历史与僭政——重审施特劳斯与科耶夫之争
[美]弗罗斯特(Bryan-Paul Frost) 编;[美]伯恩斯(Timothy W. Burns)
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
最后一章
[美]厄尼·派尔
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
汤姆素亚历险记:中小学生课外阅读快乐读书吧 儿童文学无障碍有声伴读世界名著童话故事
[美]马克·吐温
Windows编程启示录:The Old New Thing: Practical Development Throughout the Evolution of Windows
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译