自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (26)
  • 收藏
  • 关注

原创 计算机视觉之OCR的几大应用

鉴于计算机视觉的广泛应用和巨大潜力,它已成为人工智能和机器学习最热门的子领域之一。其目标——复制人类视觉强大的能力。而我们今天要讲的是计算机视觉领域应用较早的且较为成熟的OCR技术的应用。下面我们来看看OCR的几大应用。1)文档识别文档识别主要应用于学习工作等一些关于文档处理的办公领域,可以快速高效利用OCR技术对文案文档、书籍、表格、说明书、简历、合同等各类纸质文档进行识别,另外可以通过云端技术将识别后的内容以及图像上传到服务器进行备份储存,并具备方便的检索功能,可以使用户简单方便的找到备份的

2021-06-25 17:00:17 692

原创 云脉H5文档管理系统之文件管理的共享与协作

目前大多数的企业在文档管理方面不但没有互联网化,采用落后的文件管理系统,而且纸质文档管理凌乱无法实现文件存储共享与协作。针对这一系列问题,厦门云脉推出了H5文档管理系统,在文档管理便捷化上迈出了一大步。云脉H5文档管理系统基于深耕多年的高精度OCR文字识别技术,实现纸质文档电子化,既能支持印刷体和手写体的文字识别,还能实现复杂场景下的文本识别。产品核心能力如下:全文识别:利用先进的OCR技术,高精度文字识别功能,支持文件批量导入识别功能,准确识别图片中的文字,生成电子文本,方便管理与分享。智能

2021-06-25 16:57:12 218 1

原创 云脉H5高效纠错系统

OCR识别过程中,往往存在识别错位,为了提高识别后文本的可用性,避免繁琐的人工校正,云脉设计了一款高效的纠错系统,该系统能够实现营业执照、增值税发票、社保卡、驾照、行驶证等各种证件结构化提取,提取后的结果能够进行图文对照、候选集、词联想等纠错。界面左侧显示每个栏目的切图,点击每个字,能够在原图中标记出来,识别结果与原图一目了然,可以快速发现是否识别错进行纠错,大大节省了人工校正的时间,可以试用户的人工纠错成本大大降低。...

2021-06-21 11:23:54 155

原创 文档管理利器--云脉文档自动分类快速检索

大部分企业对文档的管理只是停留在简单的图片人工归类和查询,这样耗费了大量的人力。尤其是对于数据密集型的企业,急需通过优化所有文档驱动的业务流程来降低文档管理成本。云脉文档管理基于超高识别率的OCR识别技术,对企业文档扫描入库文档进行标签自定义,根据扫描文档的识别结果区分类型,并将其自动分类到对应标签下,提高文档入库的工作效率。同时可根据类型、标签规则、关键字对大量入库文档进行精确或模糊查询:1、自动分类:用户可在管理员后台为每个标签添加规则,同时个人用户也可灵活的在手机H5界面,微信小程序,PC

2021-06-21 11:22:18 251 1

原创 云脉H5文档管理为你轻松管理文档档案

QQbut在数字化时代OCR技术的成熟与应用为企业带来巨大效益,它不仅能在企业管理纸质文档中为企业提供高效的办公效率,让杂乱无章的纸质变得井然有序,也方便企业在管理海量的数据资料中能快速检索,查找,批量上传数据资料。厦门云脉依托OCR识别技术推出了云脉H5文档管理,随时随地轻松管理你的文档资料,而且支持简繁体中英文等多种语言,字符识别率高于98%以上,平均识别时间少于2秒,可以高效准确的识别纸质文件信息,快速录入文字信息,减少人工的工作量。不仅适用于办公,也可以用于平时的学习资料收集。它的突出优势是

2021-06-10 15:28:29 178 13

原创 云脉文档管理系统高效管理海量纸质文档

企业在业务过程中,会出现大量的纸质文件,比如单据、发票凭证、供应商的往来文件等。纸质文档在管理和使用上存在诸多问题:存放纸质文档,需要占据大量的空间2、查看、检索、分享、统计存在诸多不便3、抗灾难性差,容易损坏4、需要额外的管理设备和人力资源开支而且纸质文档的电子化,不同企业有不同的需求。但通常需求如下图: 云脉文档管理系统,可以将纸质文件,如:单据、档案资料、合同等转换成电子文档,并集中存储到系统当中,提供方便灵活的管理功能,帮助企业更便捷、高效地管理好海量纸质文档:...

2021-06-10 15:22:08 199 12

原创 档案数字化中OCR的运用

档案数字化中OCR的运用 信息时代,档案数字化已成为今后一段时期档案工作的重中之重,纸质档案扫描工作在各地如火如荼地进行。然而,扫描所产生的电子档案实际上只是以图像形式存在的文件,而非真正意义上的文本文件。也就是说,计算机只认识档案的外表,却不认识其内在文字。用户通过计算机只能看到档案的原貌,却不能对其中的内容进行引用、检索等操作,这无疑对将来的电子档案利用工作造成了很大的不便。考虑到档案用户的利用需求,若要得到真正文本形态的电子档案,使档案数字化工...

2021-06-10 10:30:50 223

原创 Ocr识别之扫描笔应用

缺芯少芯是21世纪二十年代的旋律,也是国外对中国企业制裁和打击的手段,望洋兴叹,芯片国产化不可不为。芯片分服务器端,PC端和嵌入式手机端等芯片,你会发现,基于arm的嵌入式国产芯片已经悄然兴起。如全志和瑞芯微的芯片,已经在嵌入式平台挖出一道口子,提供优秀的性能体验,也给嵌入式应用带来了更多可能和想象空间,比如可以流畅的运行Android系统,加速产品上线。扫描笔主要面向中小学和甚至大学和专业人士,提供便捷高效的翻译能力。疫情带动下的网络教育和线上教育火热,扫描笔可以提供离线试的专业翻译辅导能力。扫描

2021-06-10 10:28:48 1061

原创 文档排版智能转换系统

目前越来越多的资源信息是以图像形式存储,然而很多用户在获取图像后需要对图片进行编辑或者电子文档形式进行存储。最主流的做法是直接进行 OCR 提取,但这种方法无法满足用户对排版的需求。云脉文档系统采用一些先进的技术对图片进行排版恢复还原为 doc 形式的文档。支持格式简单的图像,以及图片并茂的内容图像,文档排版多样的文档。解决市场上丰富背景还原度差,复杂的图片无法很好还原为电子文档的问题。云脉文档系统可对作业、试卷的版面进行分析,输出图、表、标题、文本的位置,并输出分版块内容的OCR识别结果,支持中、

2021-06-04 15:02:16 120

原创 手机相册高效管理和检索

在信息时代的今天,很多人的手机相册里的图像包含了课程的教案、学习资料、工作文件图片、杂乱的笔记、PPT、纸质文件、合同、档案、财务单据、小票各种信息资讯截图,产品说明书,商品的包装信息,产品宣传页,医疗图片等等。手机相册中图片数量日益增多且繁类复杂,,通过直接手动查找,十分耗时。在这里向大家推荐一款手机相册高效管理和检索的工具--云脉相册检索工具。它可以在本地端快速的进行识别,通过任意关键字,一秒钟就能高效的查找到所要的信息图像,并且图像上的关键字会高亮呈现,实现对相册里的图像高效管理。云脉相册检索的功

2021-06-04 14:59:44 235

原创 云脉文档管理小程序轻松解决文档管理难题

云脉文档管理小程序轻松解决文档管理难题在日常处理办公文档过程中常常需要对纸质文档的文字内容进行二次编辑,堆满文件想整理却又无从下手的诸多难题,由此,厦门云脉推出了云脉文档管理小程序轻松的解决你的文档管理难题。 搜索微信“云脉文档管理”小程序,把拍照或上传图片进去扫描识别,云脉文档管理小程序就可以对图片中的文字进行识别进而转为可编辑文字信息,并且运用最新先进的智能处理技术对图片图像进行美化,包过图片增强、增亮、二值化、灰度,去边框等多种图像处理模式,提高图片的整体质量方便二次使用...

2021-05-31 17:02:22 133

原创 云脉自定义模板识别大大提高资料数据格式化的效率

云脉自定义模板识别软件是云脉公司根据多年OCR研发经验,结合市场需求研发的一款可以针对各种票据、卡证实现字段名和字段值对应提取的OCR产品。支持通用表格、票据的识别,并且配有灵活的模板编辑工具,用户可以根据需求定制模板。适用于具有表格特征的表单、问卷、单证,通过扫描、图像处理、自动分类、OCR(光学字符识别)技术,将表格图像中的数据信息准确、快速、真实地提取并保存,数据结果可导出为标准的数据格式,如txt文件、XML文件等。可与政府、企事业单位、工商、保险等多个行业的业务流程系统无缝结合,提高资料电子...

2021-05-31 09:19:38 325 22

原创 云脉文档管理小程序轻松解决文档管理难题

在日常处理办公文档过程中常常需要对纸质文档的文字内容进行二次编辑,堆满文件想整理却又无从下手的诸多难题,由此,厦门云脉推出了云脉文档管理小程序轻松的解决你的文档管理难题。 搜索微信“云脉文档管理”小程序,把拍照或上传图片进去扫描识别,云脉文档管理小程序就可以对图片中的文字进行识别进而转为可编辑文字信息,并且运用最新先进的智能处理技术对图片图像进行美化,包过图片增强、增亮、二值化、灰度,去边框等多种图像处理模式,提高图片的整体质量方便二次使用和管理。对于识别后的文档系统会智能提取标签并进行标签分类,...

2021-05-28 10:05:18 149 16

原创 云脉高效数字化档案管理

档案资源在企事业单位一直被看作为宝贵的资产。然而以前的档案管理都是运用人员手工整理及编写目录,而且更多的是以纸质形式来存放,不仅工作时效低、安全性不高,在档案保存、内部档案调取等方面也有很多的缺点和弊端。随着现代档案管理数字化技术的逐步发展成熟,厦门云脉提出了档案管理的解决方案。针对企事业单位和档案馆内部档案管理难题,厦门云脉推出了云脉档案管理系统,支持线上OA审批申请,需调档的内容直接通过OA进行反馈,大大提高了行政效率。云脉档案管理系统是针对于电子档案文件的收集、整理和利用的管理流程,提供建档案

2021-05-27 11:51:42 131

原创 16.C1083错误

C1083错误

2010-08-23 12:12:00 936

原创 天嵌TQ2440 ARM开发板Uboot移植

现将DirectShow9.0在VC++6.0中环境设置总结如下。假设将DirectX装在C盘的根目录下面(即C:/DXSDK)。1.编译基类源代码,至少生成两个静态库文件——打开C:/DXSDK/Samples/C++/DirectShow/BaseClasses/baseclasses.dsw,Debug版本生strmbasd.lib,Release版本生成strmbase.lib2.

2010-08-23 12:06:00 920

原创 13.使用更安全CRT函数(C语言)

CRT函数

2010-08-03 12:22:00 3503 1

原创 天嵌TQ2440 ARM开发板Uboot移植

TQ2440 ARM开发板Uboot移植 移植环境主    机:VMWare--Fedora 10 Kernel:2.6.34 开发板:TQ2440--256MB Nand编译器:arm-linux-gcc-4.3.3.tgz u-boot:u-boot-1.1.6代码查看工具:Source Insight移植步骤本次移植的功能特点包括:Nand Flash

2010-08-03 12:13:00 677

原创 test21341231231234

1111111111111111113234123

2010-08-03 12:09:00 1019

转载 11.vc调试入门3

vc调试入门

2010-07-19 13:47:00 516

转载 10.vc调试入门2

vc调试入门2

2010-07-19 13:45:00 424

转载 9.VC调试入门1

VC调试入门

2010-07-19 13:37:00 315

转载 保护知识产权 打出“组合拳”(砥砺奋进的五年)

人民日报 2017年10月12日http://paper.people.com.cn/rmrb/html/2017-10/12/nw.D110000renmrb_20171012_5-01.htm

2010-07-19 13:28:00 299

原创 7.const用法详解

const用法

2010-07-19 13:18:00 294

原创 6.atoi,atol,strtod,strtol,strtoul函数介绍

atoi,atol,strtod,strtol,strtoul函数介绍

2010-07-19 13:08:00 443

原创 5.typedef和#define的用法与区别

typedef和#define

2010-07-19 12:32:00 312

原创 4.函数malloc()和calloc()

malloc()和calloc()

2010-07-19 12:30:00 308

原创 3. c/c++转义字符大全

c/c++转义字符大全

2010-07-19 12:27:00 452

原创 2.VC生成的各种文件

VC生成的各种文件

2010-07-19 12:23:00 375

原创 1.VC文件格式(项目文件说明)

VC文件格式 项目文件说明

2010-07-19 12:21:00 594

原创 HTML学习笔记B九

  ?          网页中的框架?          在当前框架中打开超链接页面?          默认就是在当前框架页中打开,也可以采用Target=“_self”?          在指定框架中打开超级链接页面?          Target=“name”?          新开窗口打开链接页面?          Target=“_blank

2009-02-09 20:50:00 377

原创 HTML学习笔记B八

 ?          网页中的框架?          制作框架页面的步骤:?          1.编写所有子框架页面?          2.编写主框架页面?          3.在主框架页面中设定子框架名称?          4.如果框架页面之间存在链接,在子框架中设定链接。注意:框架页面是不含标签的基本语法 您的浏览器不支持框架,请考虑升级您的浏览器!?          定义框

2009-02-09 20:43:00 437

原创 HTML学习笔记B七

 表格的嵌套–         在 之间插入表格,实现表格嵌套例:17.htm–         表格的作用一般只是控制文本和图像的显示,而不显示表格的边框–         表单(FORM)标记–         HTML表单是HTML页面与浏览器端实现交互的重要手段。利用表单可以收集客户端提交的有关信息。–         在HTML里,我们可以定义表单,并且使表单与CGI或ASP等服务器端的

2009-02-09 20:41:00 619

原创 HTML学习笔记B六

 表格(TABLE)标记--1?           元素:定义一个表格。每一个表格只有一对和,一张页面中可以有多个表格。?          元素:定义表格的行,一个表格可以有多行,所以对于一个表格来说不是唯一的。?          元素:定义表格的一个单元格。每行可以有不同数量的单元格,在和之间是单元格的具体内容。?          需要注意的是:上述的三个元素必须、而且只能够配对使用。缺

2009-02-09 20:39:00 425

原创 HTML学习笔记B五

  HTML对图片的控制--1?          基本语法:?          图片名称”>?          引用图片必须用元素标志。元素下的基本元素属性是src属性,src的属性值为所引用的图片的URL地址。?          src属性是必须的。Src的URL可以是绝对地址,也可以是相对地址?          所谓图片的替代文本,指图片不能显示时在图片所在位置显示的一段文本或当鼠标

2009-02-09 20:35:00 332

原创 HTML学习笔记B四

 六字标签属性——1?          文字属性标记?          1.文字颜色?          指定颜色 ... ?          #=RRGGBB 16 进制数码?          2.文字字体?           ... #=客户端可获得的字体?          3.文字大小?           ... ?          #=1, 2, 3, 4, 5, 6,

2009-01-27 13:53:00 790

原创 HTML学习笔记B三

 元素中有下列元素属性:?          (1)bgcolor?          bgcolor属性标志HTML文档的背景颜色。如:bgcolor="#CCFFCC"。?          ?          HTML对颜色的控制------?          HTML对颜色的控制也有自己的语法。HTML使用16进制的RGB颜色值对颜色进行控制。?          16 进制的数码有:

2009-01-27 13:50:00 681

原创 HTML学习笔记B二

 HTML基本结构的有关元素和元素属性?          HEAD元素——1 元素出现在文档的开头部分。与之间的内容不会在浏览器的文档窗口显示,但是其间的元素有特殊重要的意义。?           ?          元素定义HTML文档的标题。与之间的内容将显示在浏览器窗口的标题栏。?          HEAD元素——2?          元素?          元素下面可以插入很多

2009-01-27 13:49:00 446

原创 HTML学习笔记B一

 HTML概念?          HTML(Hyper Text Markup Language 超文本标识语言)–         是一种用来制作超文本文档的简单标记语言。–         用HTML编写的超文本文档称为HTML文档。?          HTML文档的编写方法?          手工直接编写–         记事本等,存成.htm .html格式?          使

2009-01-27 13:45:00 361

原创 HTML学习笔记十

 HTML语言教程之十:多媒体页面(Alternative lnline Elements)嵌入多媒体文本(EMBED) 基本语法 #=URL本标记可以用来在主页中嵌入多媒体文本,如:电影(movie), 声音(sound), 虚拟现实语言(vrml)... ... 体会 标记,您需要把 plugin 安装完备。请注意:embed attributes are different betwee

2009-01-22 09:15:00 374

VC++2010权威开发指南+源代码.part2

第一部分 Visual C++ 2010开发与新特性   第1章 Visual C++ 2010开发环境简介 1   1.1 Visual C++ 2010简介 1   1.2 Visual C++ 2010下载安装指南 1   1.3 Visual C++ 2010主要特点与   1.3 新特性 3   1.4 Visual C++ 2010开发环境操作   1.4 指南 6   1.4.1 创建Visual C++应用程序 6   1.4.2 Visual C++ 2010菜单介绍 9   1.5 Visual C++ 2010 MFC简介 12   1.6 Visual C++ 2010 CLR简介 13   1.7 Visual C++ 2010 64位编程 14   1.8 支持新的C++语言标准 14   1.8.1 支持新的C++语言标准   1.8.1 (C++ 0x) 14   1.8.2 Lambda表达式 15   1.8.3 静态断言static_assert 17   1.8.4 auto关键字 18   1.8.5 右值引用 19   1.8.6 安全数据类型 22   1.8.7 移动构造 23   1.9 支持开发并行程序 26   1.9.1 运行库支持native代码 26   1.9.2 调试和分析工具 29   1.10 对MFC的增强 31   1.10.1 任务对话框CTaskDialog 31   1.10.2 重启管理器(Restart Manager)支持 33   1.10.3 支持新的用户界面风格 34   第2章 MFC应用程序框架 37   2.1 用MFC向导生成应用程序 37   2.1.1 生成的程序框架 37   2.1.2 生成的应用程序类型 43   2.1.3 向导生成工程文件简介 46   2.2 应用程序框架分析 46   2.2.1 框架简介 47   2.2.2 MFC应用程序运行流程 50   2.2.3 应用程序窗口 51   2.2.4 消息机制与消息循环 59   2.3 文档与视图 65   2.3.1 文档类结构分析 65   2.3.2 视图类结构分析 65   2.3.3 文档与视图的关系 67   2.3.4 SDI应用程序分析 69   2.3.5 MDI应用程序分析 69   2.4 工具栏与状态栏 69   2.4.1 工具栏 70   2.4.2 状态栏 78   2.5 MFC新功能——Office 2007   2.5.1 风格程序分析 85   2.6 MFC新功能——Visual Studio   2.6.1 风格程序分析 90   2.7 MFC新功能——Windows资源   2.7.1 管理器风格程序分析 98   2.8 应用程序框架类对象分析 100   2.8.1 视图类对文档类的调用 100   2.8.2 在框架类中获得当前的文档类和视图类对象指针 101   2.8.3 获得应用程序类对象的指针 101   2.8.4 从应用类对象中获得主框架类对象的指针 101   2.9 小结 102   第3章 Visual C++ 2010 MFC菜单编程 103   3.1 菜单编程 103   3.1.1 创建菜单 104   3.1.2 创建菜单热键 115   3.1.3 标记菜单 115   3.1.4 给菜单加入图标 119   3.1.5 禁用菜单 121   3.1.6 移除与加载菜单 127   3.2 菜单消息的传输机制 129   3.2.1 菜单消息的分类 129   3.2.2 菜单消息的传输路由 129   3.3 动态菜单操作 131   3.3.1 添加菜单 131   3.3.2 插入菜单 133   3.3.3 删除菜单 135   3.3.4 插入菜单的命令响应 136   3.3.5 修改菜单 137   3.4 小结 140   第4章 Visual C++ 2010 MFC对话框编程 141   4.1 对话框简介 141   4.1.1 对话框的控件简介 141   4.1.2 对话框的种类简介 149   4.1.3 设计对话框 150   4.2 创建与销毁对话框 153   4.2.1 模态对话框 153   4.2.2 非模式对话框 159   4.2.3 属性页对话框 163   4.3 消息对话框 173   4.4 通用对话框 175   4.4.1 文件打开对话框 176   4.4.2 文件保存对话框 178   4.4.3 颜色对话框 179   4.4.4 字体对话框 181   4.4.5 查找对话框 183   4.4.6 页面设置对

2012-04-12

VC++2010权威开发指南+源代码

资源比较大,分成两部分上传。 第一部分 Visual C++ 2010开发与新特性   第1章 Visual C++ 2010开发环境简介 1   1.1 Visual C++ 2010简介 1   1.2 Visual C++ 2010下载安装指南 1   1.3 Visual C++ 2010主要特点与   1.3 新特性 3   1.4 Visual C++ 2010开发环境操作   1.4 指南 6   1.4.1 创建Visual C++应用程序 6   1.4.2 Visual C++ 2010菜单介绍 9   1.5 Visual C++ 2010 MFC简介 12   1.6 Visual C++ 2010 CLR简介 13   1.7 Visual C++ 2010 64位编程 14   1.8 支持新的C++语言标准 14   1.8.1 支持新的C++语言标准   1.8.1 (C++ 0x) 14   1.8.2 Lambda表达式 15   1.8.3 静态断言static_assert 17   1.8.4 auto关键字 18   1.8.5 右值引用 19   1.8.6 安全数据类型 22   1.8.7 移动构造 23   1.9 支持开发并行程序 26   1.9.1 运行库支持native代码 26   1.9.2 调试和分析工具 29   1.10 对MFC的增强 31   1.10.1 任务对话框CTaskDialog 31   1.10.2 重启管理器(Restart Manager)支持 33   1.10.3 支持新的用户界面风格 34   第2章 MFC应用程序框架 37   2.1 用MFC向导生成应用程序 37   2.1.1 生成的程序框架 37   2.1.2 生成的应用程序类型 43   2.1.3 向导生成工程文件简介 46   2.2 应用程序框架分析 46   2.2.1 框架简介 47   2.2.2 MFC应用程序运行流程 50   2.2.3 应用程序窗口 51   2.2.4 消息机制与消息循环 59   2.3 文档与视图 65   2.3.1 文档类结构分析 65   2.3.2 视图类结构分析 65   2.3.3 文档与视图的关系 67   2.3.4 SDI应用程序分析 69   2.3.5 MDI应用程序分析 69   2.4 工具栏与状态栏 69   2.4.1 工具栏 70   2.4.2 状态栏 78   2.5 MFC新功能——Office 2007   2.5.1 风格程序分析 85   2.6 MFC新功能——Visual Studio   2.6.1 风格程序分析 90   2.7 MFC新功能——Windows资源   2.7.1 管理器风格程序分析 98   2.8 应用程序框架类对象分析 100   2.8.1 视图类对文档类的调用 100   2.8.2 在框架类中获得当前的文档类和视图类对象指针 101   2.8.3 获得应用程序类对象的指针 101   2.8.4 从应用类对象中获得主框架类对象的指针 101   2.9 小结 102   第3章 Visual C++ 2010 MFC菜单编程 103   3.1 菜单编程 103   3.1.1 创建菜单 104   3.1.2 创建菜单热键 115   3.1.3 标记菜单 115   3.1.4 给菜单加入图标 119   3.1.5 禁用菜单 121   3.1.6 移除与加载菜单 127   3.2 菜单消息的传输机制 129   3.2.1 菜单消息的分类 129   3.2.2 菜单消息的传输路由 129   3.3 动态菜单操作 131   3.3.1 添加菜单 131   3.3.2 插入菜单 133   3.3.3 删除菜单 135   3.3.4 插入菜单的命令响应 136   3.3.5 修改菜单 137   3.4 小结 140   第4章 Visual C++ 2010 MFC对话框编程 141   4.1 对话框简介 141   4.1.1 对话框的控件简介 141   4.1.2 对话框的种类简介 149   4.1.3 设计对话框 150   4.2 创建与销毁对话框 153   4.2.1 模态对话框 153   4.2.2 非模式对话框 159   4.2.3 属性页对话框 163   4.3 消息对话框 173   4.4 通用对话框 175   4.4.1 文件打开对话框 176   4.4.2 文件保存对话框 178   4.4.3 颜色对话框 179   4.4.4 字体对话框 181   4.4.5 查找对话框 183   4.4.6 页面设置对话框 185   4.4.7 打印对话框 186   4.5 小结 187   第5章 Visual C++ 2010 MFC对话框控件 188   5.1 Visual C++ 2010 Button控件简介与开发 191   5.2 Visual C++ 2010 List Box 控件简介与开发 193   5.3 Visual C++ 2010 Com boBox控件简介与开发 195   5.3.1 创建扩展组合框控件 196   5.3.2 在扩展组合框控件中使用   5.3.2 图像列表 197   5.3.3 设置各项的图像 197   5.3.4 处理扩展组合框控件中的通知消息 198   5.4 Visual C++ 2010 List控件简介与开发 198   5.4.1 列表控件和列表视图 199   5.4.2 列表项和图像列表 199   5.4.3 回调项和回调屏蔽 200   5.4.4 创建列表控件 200   5.4.5 创建图像列表 201   5.4.6 向控件添加列(报表视图) 204   5.4.7 向控件添加项 205   5.4.8 在列表控件中滚动、排列、   5.4.8 排序和查找 205   5.4.9 在列表控件中实现工作区 205   5.4.10 处理列表控件中的通知消息 206   5.4.11 更改列表控件样式 206   5.4.12 虚拟列表控件 207   5.4.13 列表控件的消息映射 209   5.4.14 列表控件的风格选项及表头设置 210   5.4.15 销毁列表控件 210   5.5 Visual C++ 2010 Edit控件简介与开发 211   5.6 Visual C++ 2010 Rich Edit控件简介与开发 213   5.6.1 Rich Edit控件中的字符格式 215   5.6.2 Rich Edit控件中的段落格式 215   5.6.3 Rich Edit控件中的当前选定内容 215   5.6.4 Rich Edit控件中的分词 216   5.6.5 Rich Edit控件中的剪贴板操作 216   5.6.6 Rich Edit控件中的流操作 216   5.6.7 Rich Edit控件中的打印操作 216   5.6.8 无底的Rich Edit控件 217   5.6.9 来自Rich Edit控件的通知 217   5.7 Visual C++ 2010 Progress控件简介与开发 219   5.7.1 进度控件的样式 219   5.7.2 进度控件的设置 219   5.7.3 操作进度控件 220   5.8 Visual C++ 2010 Tree控件简介与开发 220   5.8.1 树控件样式 221   5.8.2 树控件父项和子项 221   5.8.3 树控件项位置 222   5.8.4 树控件项标签 222   5.8.5 树控件标签编辑 223   5.8.6 树控件项的状态 223   5.8.7 树控件图像列表 224   5.8.8 树控件项选择 224   5.8.9 树控件拖放操作 224   5.8.10 树控件项信息 225   5.8.11 树控件通知消息 225   5.9 Visual C++ 2010 DBgrid控件简介与开发 226   5.9.1 示例程序1 226   5.9.2 示例程序2 227   5.10 Visual C++ 2010 Rebar控件简介与开发 228   5.10.1 在Rebar控件中使用图像列表 230   5.10.2 在Rebar控件中使用对话栏 231   5.10.3 处理Rebar控件中的通知消息 231   5.11 Visual C++ 2010 Timer控件简介与开发 232   5.12 Visual C++ 2010 Tab控件简介与开发 234   5.12.1 选项卡和选项卡控件属性 235   5.12.2 选项卡控件的使用方法 235   5.12.3 创建选项卡控件的方法 235   5.12.4 处理选项卡控件通知消息 236   5.12.5 CTabCtrl类简介 236   5.13 Visual C++ 2010 IP控件简介与开发 241   5.14 Visual C++ 2010 Picture控件简介与开发 241   5.15 Visual C++ 2010 Slider控件简介与开发 244   5.15.1 滑块控件样式 244   5.15.2 滑块控件成员函数 245   5.15.3 滑块控件通知消息 246   5.16 Visual C++ 2010 Scroll Bar控件简介与开发 246   5.17 Visual C++ 2010 Hot Key控件简介与开发 248   5.17.1 使用热键控件 248   5.17.2 设置热键 249   5.18 Visual C++ 2010 Animation控件简介与开发 249   5.18.1 使用动画控件 249   5.18.2 动画控件发送的通知 250   5.19 Visual C++ 2010 Spin控件简介与开发 250   5.19.1 数值调节钮的样式 250   5.19.2 数值调节钮成员函数 251   5.20 Visual C++ 2010 GroupBox控件简介与开发 251   5.21 Visual C++ 2010 Data Time Picker控件简介与开发 252   5.21.1 创建日期和时间选择器控件 253   5.21.2 访问嵌入的月历控件 253   5.21.3 在日期和时间选择器控件中使用自定义格式字符串 254   5.21.4 在日期和时间选择器控件中使用回调字段 254   5.21.5 处理日期和时间选择器控件中的通知消息 256   5.22 Visual C++ 2010 Month Canlendar控件简介与开发 256   5.22.1 创建月历控件 257   5.22.2 处理月历控件中的通知消息 257   5.22.3 设置月历控件的日状态 257   5.23 Visual C++ 2010 Custom控件简介与开发 258   5.23.1 使用MFC方法定制控件必备的几个基本概念 259   5.23.2 定制自定义控件的3种常见方法 260   5.24 Visual C++ 2010 SysLink控件简介与开发 260   5.25 Visual C++ 2010 Split Button控件简介与开发 261   5.26 Visual C++ 2010 Network Address控件简介与开发 262   5.27 Visual C++ 2010 Check Box控件简介与开发 262   5.28 Visual C++ 2010 Radio Button控件简介与开发 264   5.28.1 为单选按钮控件分组 264   5.28.2 获得被选中的单选按钮的文本 264   5.29 Visual C++ 2010 MediaPlayer控件简介与开发 265   5.30 小结 266   第二部分 Visual C++ 2010下MFC开发   第6章 计算机测控系统概述 267   6.1 Visual C++ 2010 SDI开发简介 267   6.1.1 建立应用程序基本框架 267   6.1.2 处理视图 267   6.1.3 处理文档 271   6.1.4 串行化处理 274   6.1.5 SDI应用程序编程思路 275   6.2 Visual C++ 2010 MDI开发简介 277   6.2.1 多文档接口 277   6.2.2 生成程序 278   6.2.3 程序类、文件和代码 279   6.2.4 自定义资源 281   6.3 Visual C++ 2010 View开发 282   6.3.1 生成源文件 283   6.3.2 初始化视图类数据成员 283   6.3.3 加入消息处理功能 285   6.3.4 设计程序资源 290   6.3.5 定制MiniDraw窗口 292   6.3.6 程序清单 293   6.4 Visual C++ 2010 EditView开发 298   6.4.1 生成MiniEdit程序 299   6.4.2 修改程序菜单 300   6.4.3 编辑加速键 301   6.4.4 程序清单 303   6.5 Visual C++ 2010 FormView开发 306   6.5.1 自定义FormDemo程序 307   6.5.2 程序清单 314   6.6 Visual C++ 2010 ScrollView开发 319   6.6.1 加入滚动功能 319   6.6.2 坐标换算 319   6.6.3 限制图形大小 322   6.6.4 改变鼠标光标 325   6.7 Visual C++ 2010 HtmlEditView开发 328   6.8 Visual C++ 2010 HtmlView开发 331   6.9 Visual C++ 2010 ListView开发 335   6.10 Visual C++ 2010 RichEditView开发 335   6.11 VisualC++ 2010 TreeView开发 336   6.12 Visual C++ 2010 Office 2007风格文档视图开发框架 337   Visual C++ 2010 Visual Studio   6.13 2008风格文档视图开发框架 342   6.14 Visual C++ 2010 Windows资源管理器风格文档视图开发框架 346   6.15 小结 350   ……   第7章 VisualC++2010MFC应用程序界面与美化   第8章 VisualC++2010MFC文本与字体   第9章 VisualC++2010MFC图形图像编程   第10章 VisualC++2010MFC动态函数链接库   第11章 VisualC++2010MFCActiveX控件   第12章 VisualC++2010MFC文件与注册表操作   第13章 VisualC++2010MFC数据库开发   第14章 VisualC++2010MFC多线程程序设计   第15章 VisualC++2010MFC网络程序设计   第16章 VisualC++2010MFC进程通信   第三部分 VisualC++2010下MFC与CLR进行开发   第17章 VisualC++2010CLR开发基础   第18章 VisualC++2010CLRWindows窗口编程   第19章 VisualC++2010MFC与.NET交互编程   第四部分 发布VisualC++2010程序   第20章VisualC++2010应用程序部署   第五部分 基于Windows7平台用VisualC++2010开发   第21章 VisualC++2010基于Windows7新特性开发

2012-04-11

Symbian OS C++高效编程

第1章 Symbian OS中的类命名约定 11.1 基本类型 11.2 T类 21.3 C类 31.4 R类 51.5 M类 61.6 静态类 91.7 使用者注意事项 91.8 小结 9第2章 异常退出(leave):Symbian OS的异常 102.1 异常退出函数 102.2 使用new(ELeave)进行基于堆的内存分配 122.3 构造函数与析构函数 132.4 使用异常退出函数 142.5 用TRAP和TRAPD捕获异常退出 152.6 LeaveScan 202.7 小结 21第3章 清除栈 223.1 使用清除栈 243.2 清除栈是如何工作的 273.3 对非CBase派生类使用清除栈 293.4 使用TCleanupItem实现定制清除 333.5 可移植性 353.6 对于使用转型(cast)的附加说明 353.7 小结 36第4章 两段构造 37第5章 描述符:Symbian OS中的字符串 415.1 不可修改的描述符 425.2 可修改的描述符 435.3 指针描述符 445.4 基于栈的缓冲描述符 475.5 基于堆的缓冲描述符 495.6 字面描述符 515.7 小结 54第6章 良好的描述符风格 566.1 作为参数和返回类型的描述符 576.2 一般描述符方法 586.3 使用HBufC堆描述符 616.4 外部化和内部化描述符 626.5 TFileName的过度使用 646.6 在描述符操纵方面有用的类 646.7 小结 66第7章 动态数组与缓冲区 687.1 CArrayX类 697.2 RArray和RPointerArray 737.3 为什么要用RArray代替CArrayX 777.4 动态描述符数组 787.5 定长数组 797.6 动态缓冲区 807.7 小结 82第8章 使用活动对象的事件驱动多任务 848.1 多任务基础 848.2 事件驱动多任务 858.3 使用活动对象 878.4 示例代码 908.5 没有活动调度器的线程 938.6 应用程序代码和活动对象 938.7 小结 94第9章 活动对象揭密 969.1 活动对象基础 969.2 活动对象的职责 999.3 异步服务提供者的职责 1019.4 活动调度器的职责 1019.5 启动活动调度器 1029.6 嵌套活动调度器 1029.7 扩展活动调度器 1039.8 撤销 1039.9 请求完成 1049.10 状态机 1059.11 长线任务(Long-Running Task) 1099.12 CIdle类 1119.13 CPeriodic类 1139.14 常见错误 1149.15 小结 115第10章 Symbian OS的线程与进程 11610.1 RThread类 11710.2 线程优先级 11910.3 停止一个运行的线程 12110.4 线程间数据传递 12410.5 异常处理 12610.6 进程 12610.7 小结 128第11章 客户机/服务器框架原理 12911.1 为什么会有客户机/服务器框架 12911.2 客户和服务器是如何协作的 13011.3 客户与服务器如何通信 13111.4 客户机/服务器框架使用了哪些类 13211.5 同步请求和异步请求有什么区别 13811.6 如何启动服务器 13911.7 一个客户可以有多少个连接 13911.8 当客户断开连接时会发生什么 14011.9 如果客户终止会发生什么 14011.10 如果服务器终止会发生什么 14011.11 客户机/服务器通信是如何使用线程的 14011.12 服务器空间活动对象有什么含义 14111.13 局部服务器(与客户处于同一进程中)的优点是什么 14111.14 客户机/服务器通信的开销有哪些 14111.15 一个客户在一个服务器中可以有几个当前请求 14411.16 可以对服务器功能加以扩展吗 14411.17 示例代码 14411.18 小结 145第12章 客户机/服务器框架实践 14712.1 客户机/服务器请求代码 14812.2 客户样板代码 14812.3 启动服务器并连接上客户 15512.4 服务器启动代码 15912.5 服务器类 16112.6 服务器关闭 16812.7 访问服务器 16812.8 小结 169第13章 二进制类型 17113.1 Symbian OS的EXE 17113.2 Symbian OS的DLL 17213.3 可写的静态数据 17313.4 线程局部存储(Thread-Local Storage) 17613.5 DLL装载器 17813.6 UID 17913.7 targettype限定符 18013.8 小结 182第14章 ECOM 18314.1 ECOM的架构 18314.2 ECOM接口的特性 18514.3 工厂方法 18614.4 实现一个ECOM接口 18814.5 资源文件 19014.6 示例客户代码 19214.7 小结 193第15章 严重错误(Panic) 19415.1 即时调试 19415.2 良好的严重错误风格 19515.3 Symbian OS严重错误的分类 19615.4 让另一个线程发生严重错误 19715.5 故障(fault)、异常退出和严重错误 19815.6 小结 199第16章 用断言发现bug 20016.1 _ASSERT_DEBUG 20116.2 _ASSERT_ALWAYS 20416.3 小结 205第17章 调试宏与测试类 20717.1 堆检查宏 20717.2 对象恒定宏 21117.3 用RTest进行控制台测试 21317.4 小结 216第18章 兼容性 21718.1 向前和向后兼容性 21818.2 源代码兼容性 21918.3 二进制兼容性 22018.4 防止破坏兼容性 22018.5 在不破坏二进制兼容性的情况下可以做哪些变更 22518.6 最佳实践:为未来的变化做打算 22718.7 兼容性与Symbian OS类的类别 22918.8 小结 229第19章 轻量级模板 230第20章 展示一个全面而易理解的API 23420.1 类布局 23520.2 IMPORT_C和EXPORT_C 23520.3 参数和返回值 23720.4 成员数据和功能抽象 24120.5 选择类、方法和参数的名字 24420.6 编译器生成的函数 24520.7 小结 246第21章 良好的编码风格 24821.1 减小代码尺寸 24821.2 小心地使用堆内存 25021.3 小心地使用栈内存 25421.4 消除子表达式,最大化代码效率 25621.5 推迟优化 25821.6 小结 258附录1 代码检查列表 259类的声明 259头文件 259注释 260构造函数 260析构函数 260分配与删除 260清除栈和异常退出安全 261循环与程序流控制 261程序逻辑 262描述符 262容器 263附录2 术语表 264附录3 参考书目及在线资源 267

2012-02-18

Visual C++网络高级编程(含有源代码)

Visual C++网络高级编程(含有源代码) 目录 第一章 TCP/IP协议 第二章 Winsock网络编程接口 第三章 Visual C++与网络编程 第四章 基本网络编程技术 第五章 Telnet协议的实现 第六章 HTTP协议的实现 第七章 FTP协议的实现 第八章 文件下载 第九章 UDP协议的实现 第十章 ICMP协议的实现 第十一章 PPP协议的实现 第十二章 代理服务器的实现 第十三章 ATL、DCOM和ActiveX技术 第十四章 网络安全 附录1 RFC文档分类

2011-11-02

C++高级参考手册

目 录 译者序 前言 第1章 对象的演化 1 1.1 基本概念 1 1.1.1 对象:特性+行为 1 1.1.2 继承:类型关系 1 1.1.3 多态性 2 1.1.4 操作概念:OOP程序像什么 3 1.2 为什么C++会成功 3 1.2.1 较好的C 3 1.2.2 采用渐进的学习方式 4 1.2.3 运行效率 4 1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺什么 10 1.3.6 方法应当提供什么 10 1.4 起草:最小的方法 12 1.4.1 前提 13 1.4.2 高概念 14 1.4.3 论述(treatment) 14 1.4.4 结构化 14 1.4.5 开发 16 1.4.6 重写 17 1.4.7 逻辑 17 1.5 其他方法 17 1.5.1 Booch 18 1.5.2 责任驱动的设计(RDD) 19 1.5.3 对象建模技术(OMT) 19 1.6 为向OOP转变而采取的策略 19 1.6.1 逐步进入OOP 19 1.6.2 管理障碍 20 1.7 小结 21 第2章 数据抽象 22 2.1 声明与定义 22 2.2 一个袖珍C库 23 2.3 放在一起:项目创建工具 29 2.4 什么是非正常 29 2.5 基本对象 30 2.6 什么是对象 34 2.7 抽象数据类型 35 2.8 对象细节 35 2.9 头文件形式 36 2.10 嵌套结构 37 2.11 小结 41 2.12 练习 41 第3章 隐藏实现 42 3.1 设置限制 42 3.2 C++的存取控制 42 3.3 友元 44 3.3.1 嵌套友元 45 3.3.2 它是纯的吗 48 3.4 对象布局 48 3.5 类 48 3.5.1 用存取控制来修改stash 50 3.5.2 用存取控制来修改stack 51 3.6 句柄类(handle classes) 51 3.6.1 可见的实现部分 51 3.6.2 减少重复编译 52 3.7 小结 54 3.8 练习 54 第4章 初始化与清除 55 4.1 用构造函数确保初始化 55 4.2 用析构函数确保清除 56 4.3 清除定义块 58 4.3.1 for循环 59 4.3.2 空间分配 60 4.4 含有构造函数和析构函数的stash 61 4.5 含有构造函数和析构函数的stack 63 4.6 集合初始化 65 4.7 缺省构造函数 67 4.8 小结 68 4.9 练习 68 第5章 函数重载与缺省参数 69 5.1 范围分解 69 5.1.1 用返回值重载 70 5.1.2 安全类型连接 70 5.2 重载的例子 71 5.3 缺省参数 74 5.4 小结 81 5.5 练习 82 第6章 输入输出流介绍 83 6.1 为什么要用输入输出流 83 6.2 解决输入输出流问题 86 6.2.1 预先了解操作符重载 86 6.2.2 插入符与提取符 87 6.2.3 通常用法 88 6.2.4 面向行的输入 90 6.3 文件输入输出流 91 6.4 输入输出流缓冲 93 6.5 在输入输出流中查找 94 6.6 strstreams 96 6.6.1 为用户分配的存储 96 6.6.2 自动存储分配 98 6.7 输出流格式化 100 6.7.1 内部格式化数据 101 6.7.2 例子 102 6.8 格式化操纵算子 106 6.9 建立操纵算子 108 6.10 输入输出流实例 111 6.10.1 代码生成 111 6.10.2 一个简单的数据记录 117 6.11 小结 123 6.12 练习 123 第7章 常量 124 7.1 值替代 124 7.1.1 头文件里的const 124 7.1.2 const的安全性 125 7.1.3 集合 126 7.1.4 与C语言的区别 126 7.2 指针 127 7.2.1 指向const的指针 127 7.2.2 const指针 127 7.2.3 赋值和类型检查 128 7.3 函数参数和返回值 128 7.3.1 传递const值 128 7.3.2 返回const值 129 7.3.3 传递和返回地址 131 7.4 类 133 7.4.1 类里的const和enum 133 7.4.2 编译期间类里的常量 134 7.4.3 const对象和成员函数 136 7.4.4 只读存储能力 139 7.5 可变的(volatile) 140 7.6 小结 141 7.7 练习 141 第8章 内联函数 142 8.1 预处理器的缺陷 142 8.2 内联函数 144 8.2.1 类内部的内联函数 145 8.2.2 存取函数 146 8.3 内联函数和编译器 150 8.3.1 局限性 150 8.3.2 赋值顺序 150 8.3.3 在构造函数和析构函数里隐藏行为 151 8.4 减少混乱 152 8.5 预处理器的特点 153 8.6 改进的错误检查 154 8.7 小结 155 8.8 练习 155 第9章 命名控制 157 9.1 来自C语言中的静态成员 157 9.1.1 函数内部的静态变量 157 9.1.2 控制连接 160 9.1.3 其他的存储类型指定符 161 9.2 名字空间 161 9.2.1 产生一个名字空间 162 9.2.2 使用名字空间 163 9.3 C++中的静态成员 166 9.3.1 定义静态数据成员的存储 166 9.3.2 嵌套类和局部类 168 9.3.3 静态成员函数 169 9.4 静态初始化的依赖因素 171 9.5 转换连接指定 174 9.6 小结 174 9.7 练习 174 第10章 引用和拷贝构造函数 176 10.1 C++中的指针 176 10.2 C++中的引用 176 10.2.1 函数中的引用 177 10.2.2 参数传递准则 178 10.3 拷贝构造函数 179 10.3.1 传值方式传递和返回 179 10.3.2 拷贝构造函数 182 10.3.3 缺省拷贝构造函数 187 10.3.4 拷贝构造函数方法的选择 188 10.4 指向成员的指针

2011-11-02

VC6.0+MFC类库参考手册中文完整版

VC6.0+MFC类库参考手册中文清晰版(上册和下册) 美国微软出版社授权出版中文版系列书Microsoft Visual Studio 中文版系列书编程的利器·知识的迸发Microsoft Visual C++ 6.0 MFC LibraryReference类库参考手册 类库概述概述部分描述了Microsoft基本类库(MFC)6.0版中的类并对其按种类分类。MFC中的类,一起构成了“应用框架”——用于Windows API的编写的一个应用框架。编程的任务就是填写特定于自己应用的代码。关于Microsoft基类库中的类按以下的种类给出:l 根类:CObjectl MFC应用结构类:l 应用和线程支持类l 命令例程类l 文档类l 视图类(结构)l 框架窗口类(结构)l 文档-模板类l 窗口、对话和控件类l 框架窗口类(窗口)l 对话框类l 控件类

2011-11-02

iPhone开发基础教程PDF(含源代码)

第1章 欢迎来到iPhone的世界   1.1 关于本书   1.2 必要条件   1.3 必备知识   1.4 编写iPhone应用程序有何不同   1.4.1 只有一个正在运行的应用程序   1.4.2 只有一个窗口   1.4.3 受限访问   1.4.4 有限的响应时间   1.4.5 有限的屏幕大小   1.4.6 有限的系统资源   1.4.7 缺少Cocoa工具   1.4.8 新属性   1.4.9 与众不同的方法   1.5 本书内容   1.6 准备开始吧   第2章 创建基本项目   2.1 在Xcode中设置项目   2.2 InterfaceBuilder简介   2.2.1 nib文件的构成   2.2.2 在视图中添加标签   2.3 iPhone美化   2.4 小结   第3章 处理基本交互   3.1 模型-视图-控制器范型   3.2 创建项目   3.3 创建视图控制器   3.3.1 输出口   3.3.2 操作   3.3.3 将操作和输出口添加到视图控制器   3.3.4 将操作和输出口添加到实现文件   3.4 使用应用程序委托   3.5 编辑MainWindow.xib   3.6 编辑Button_FunViewController.xib   3.6.1 在InterfaceBuilder中创建视图   3.6.2 连接所有元素   3.6.3 测试   3.7 小结   第4章 更丰富的用户界面   4.1 满是控件的屏幕   4.2 活动、静态和被动控件   4.3 创建应用程序   4.3.1 导入图像   4.3.2 实现图像视图和文本字段   4.3.3 添加图像视图   4.3.4 添加文本字段   4.3.5 设置第二个文本字段的属性   4.3.6 连接输出口   4.4 构建和运行   4.4.1 完成输入后关闭键盘   4.4.2 通过触摸背景关闭键盘   4.5 实现滑块和标签   4.5.1 确定输出口   4.5.2 确定操作   4.5.3 添加输出口和操作   4.5.4 添加滑块和标签   4.5.5 连接操作和输出口   4.6 实现开关和分段控件   4.6.1 确定输出口   4.6.2 确定操作   4.6.3 添加开关和分段控件   4.6.4 连接输出口   4.7 实现按钮、操作表和警报   4.7.1 将输出口及操作添加到控制器头文件   4.7.2 在Interface Builder中添加按钮   4.7.3 实现按钮的操作方法   4.8 显示操作表   4.9 美化按钮   4.9.1 viewDidLoad方法   4.9.2 控件状态   4.9.3 可拉伸图像   4.10 小结   第5章 自动旋转和自动调整大小   第6章 多视图应用程序   第7章 标签栏与选取器   第8章 表视图简介   第9章 导航控制器和表视图   第10章 应用程序设置和用户默认设置   第11章 基本数据持久性   第12章 使用Quartz和OpenGL绘图   第13章 轻击、触摸和手势   第14章 我在哪里?使用Core Location定位功能   第15章 加速计   第16章 iPhone照相机和照片库   第17章 应用程序本地化   第18章 未来之路

2011-10-27

Windows核心编程(第五版)+源代码2

注:由于资源比较大,所以被分成两部分上传. 目录: 第I部分 必备知识 第1章 错误处理 3 1.1 定义自己的错误代码 7 1.2 ErrorShow示例程序 7 第2章 字符和字符串处理 10 2.1 字符编码 11 2.2 ANSI字符和Unicode字符 与字符串数据类型 12 2.3 Windows中的Unicode函数 和ANSI函数 14 2.4 C运行库中的Unicode函数 和ANSI函数 16 2.5 C运行库中的安全字符串函数 17 2.5.1 初识新的安全字符串函数 18 2.5.2 在处理字符串时如何获得 更多控制 21 2.5.3 Windows字符串函数 23 2.6 为何要用Unicode 24 2.7 推荐的字符和字符串处理方式 25 2.8 Unicode与ANSI字符串转换 26 2.8.1 导出ANSI和Unicode DLL 函数 28 2.8.2 判断文本是ANSI还是 Unicode 29 第3章 内核对象 32 3.1 何为内核对象 32 3.1.1 使用计数 34 3.1.2 内核对象的安全性 34 3.2 进程内核对象句柄表 36 3.2.1 创建一个内核对象 37 3.2.2 关闭内核对象 38 3.3 跨进程边界共享内核对象 42 3.3.1 使用对象句柄继承 42 3.3.2 改变句柄的标志 45 3.3.3 为对象命名 46 3.3.4 终端服务命名空间 50 3.3.5 专有命名空间 51 3.3.5 复制对象句柄 58 第II部分 工作机制 第4章 进程 65 4.1 编写第一个Windows应用程序 66 4.1.1 进程实例句柄 71 4.1.2 进程前一个实例的句柄 72 4.1.3 进程的命令行 73 4.1.4 进程的环境变量 74 4.1.5 进程的关联性 79 4.1.6 进程的错误模式 79 4.1.7 进程当前所在的驱动器 和目录 80 4.1.8 进程的当前目录 81 4.1.9 系统版本 82 4.2 CreateProcess函数 85 4.2.1 pszApplicationName 和pszCommandLine参数 86 4.2.2 psaProcess,psaThread 和bInheritHandles参数 87 4.2.3 fdwCreate参数 89 4.2.4 pvEnvironment参数 91 4.2.5 pszCurDir参数 92 4.2.6 psiStartInfo参数 92 4.2.7 ppiProcInfo参数 98 4.3 终止进程 100 4.3.1 主线程的入口点函数返回 100 4.3.2 ExitProcess函数 101 4.3.3 TerminateProcess函数 102 4.3.4 当进程中的所有线程终止时 103 4.3.5 当进程终止运行时 103 4.4 子进程 104 4.5 管理员以标准用户权限运行时 106 4.5.1 自动提升进程的权限 109 4.5.2 手动提升进程的权限 111 4.5.3 何为当前权限上下文 112 4.5.4 枚举系统中正在运行的 进程 114 4.5.5 Process Information示例 程序 115 第5章 作业 121 5.1 对作业中的进程施加限制 124 5.2 将进程放入作业中 131 5.3 终止作业中的所有线程 132 查询作业统计信息 132 5.4 作业通知 135 5.6 Job Lab示例程序 138 第6章 线程基础 140 6.1 何时创建线程 141 6.2 何时不应该创建线程 143 6.3 编写第一个线程函数 144 6.4 CreateThread函数 144 6.4.1 psa参数 145 6.4.2 cbStackSize参数 145 6.4.3 pfnStartAddr和pvParam 参数 146 6.4.4 dwCreateFlags 147 6.4.5 pdwThreadID 147 6.5 终止运行线程 148 6.5.1 线程函数返回 148 6.5.2 ExitThread函数 148 6.5.3 TerminateThread函数 149 6.5.4 进程终止运行时 149 6.5.5 线程终止运行时 150 6.6 线程内幕 150 6.7 C/C++运行库注意事项 153 6.7.1 用_beginthreadex而不要用 CreateThread创建线程 161 6.7.2 绝对不应该调用的C/C++ 运行库函数 161 6.8 了解自己的身份 162 6.8.1 将伪句柄转换为真正的 句柄 163 第7章 线程调度、优先级和关联性 165 7.1 线程的挂起和恢复 166 7.2 进程的挂起和恢复 167 7.3 睡眠 169 7.4 切换到另一个线程 169 7.5 在超线程CPU上切换到另一个 线程 170 7.6 线程的执行时间 170 7.7 在实际上下文中谈CONTEXT 结构 174 7.8 线程优先级 178 7.9 从抽象角度看优先级 179 7.10 优先级编程 182 7.10.1 动态提升线程优先级 185 7.10.2 为前台进程微调调度程序 186 7.10.3 调度I/O请求优先级 186 7.10.4 Scheduling Lab 示例程序 188 7.11 关联性 192 第8章 用户模式下的线程同步 197 8.1 原子访问:Interlocked系列函数 198 8.2 高速缓存行 203 8.3 高级线程同步 205 需要避免使用的一种方法 205 8.4 关键段 207 8.4.1 关键段:细节 209 8.4.2 关键段和旋转锁 212 8.4.3 关键段和错误处理 213 8.5 Slim读/写锁 214 8.6 条件变量 217 8.6.1 Queue示例程序 218 8.6.2 在停止线程时的死锁问题 225 8.6.3 一些有用的窍门和技巧 227 第9章 用内核对象进行线程同步 230 9.1 等待函数 232 9.2 等待成功所引起的副作用 235 9.3 事件内核对象 236 Handshake示例程序 241 9.4 可等待的计时器内核对象 245 9.4.1 让可等待的计时器添加APC 调用 248 9.4.2 计时器的剩余问题 250 9.5 信号量内核对象 251 9.6 互斥量内核对象 253 9.6.1 遗弃问题 255 9.6.2 互斥量与关键段的比较 256 9.6.3 Queue示例程序 256 9.7 线程同步对象速查表 264 9.8 其他的线程同步函数 265 9.8.1 异步设备I/O 265 9.8.2 WaitForInputIdle函数 265 9.8.3 MsgWaitForMultipleObjects(Ex) 函数 266 9.8.4 WaitForDebugEvent函数 267 9.8.5 SignalObjectAndWait函数 267 9.8.6 使用等待链遍历API来检测 死锁 268 第10章 同步设备I/O与异步设备I/O 275 10.1 打开和关闭设备 276 细看CreateFile函数 278 10.2 使用文件设备 285 10.2.1 取得文件的大小 285 10.2.2 设置文件指针的位置 286 10.2.3 设置文件尾 288 10.3 执行同步设备I/O 289 10.3.1 将数据刷新至设备 289 10.3.2 同步I/O的取消 290 10.4 异步设备I/O基础 291 10.4.1 OVERLAPPED结构 292 10.4.2 异步设备I/O的注意事项 294 10.4.3 取消队列中的设备I/O 请求 296 10.5 接收I/O请求完成通知 296 10.5.1 触发设备内核对象 297 10.5.2 触发事件内核对象 298 10.5.3 可提醒I/O 301 10.5.4 I/O完成端口 306 10.5.5 模拟已完成的I/O请求 316 第11章 Windows线程池 324 11.1 情形1:以异步方式调用函数 325 11.1.1 显式地控制工作项 325 11.1.2 Batch示例程序 327 11.2 情形2:每隔一段时间调用一个 函数 330 Timed Message Box示例程序 332 11.3 情形3:在内核对象触发时调用 一个函数 335 11.4 情形4:在异步I/O请求完成时 调用一个函数 337 11.5 回调函数的终止操作 339 11.5.1 对线程池进行定制 340 11.5.2 得体地销毁线程池: 清理组 342 第12章 纤程 345 使用纤程 345 Counter示例程序 349 第III部分 内存管理 第13章 Windows内存体系结构 355 13.1 进程的虚拟地址空间 355 13.2 虚拟地址空间的分区 356 13.2.1 空指针赋值分区 357 13.2.2 用户模式分区 357 13.3 地址空间中的区域 360 13.4 给区域调拨物理存储器 361 13.5 物理存储器和页交换文件 362 不在页交换文件中维护的物理 存储器 363 13.6 页面保护属性 365 13.6.1 写时复制 366 13.6.2 一些特殊的访问保护属性 标志 367 13.7 实例分析 367 区域内部 372 13.8 数据对齐的重要性 375 第14章 探索虚拟内存 379 14.1 系统信息 379 系统信息示例程序 382 14.2 虚拟内存状态 387 14.3 NUMA机器中的内存管理 388 示例程序:虚拟内存状态 389 14.4 确定地址空间的状态 391 14.4.1 VMQuery函数 392 14.4.2 示例程序:虚拟内存映射 397 第15章 在应用程序中使用虚拟内存 400 15.1 预订地址空间区域 400 15.2 给区域调拨物理存储器 402 15.3 同时预订和调拨物理存储器 403 15.4 何时调拨物理存储器 405 15.5 撤销调拨物理存储器及释放区域 407 15.5.1 何时撤销调拨物理存储器 407 15.5.2 虚拟内存分配示例程序 408 15.6 改变保护属性 414 15.7 重置物理存储器的内容 415 MemReset示例程序 417 15.8 地址窗口扩展 419 AWE示例程序 422 第16章 线程栈 429 16.1 C/C++运行库的栈检查函数 433 16.2 Summation示例程序 435 第17章 内存映射文件 440 17.1 映射到内存的可执行文件和DLL 441 17.1.1 同一个可执行文件或DLL的 多个实例不会共享静态 数据 442 17.1.2 在同一个可执行文件或DLL 的多个实例间共享静态 数据 444 17.1.3 Application Instances示例 程序 449 17.2 映射到内存的数据文件 451 17.2.1 方法1:一个文件,一块 缓存 451 17.2.2 方法2:两个文件,一块 缓存 452 17.2.3 方法3:一个文件,两块 缓存 452 17.2.4 方法4:一个文件,零个 缓存 453 17.3 使用内存映射文件 453 17.3.1 第1步:创建或打开文件 内核对象 454 17.3.2 第2步:创建文件映射 内核对象 455 17.3.3 第3步:将文件的数据映射 到进程的地址空间 458 17.3.4 第4步:从进程的地址空间 撤销对文件数据的映射 461 17.3.5 第5步和第6步:关闭文件 映射对象和文件对象 462 17.6 File Reverse示例程序 463 17.7 用内存映射文件来处理大文件 469 17.8 内存映射文件和一致性 470 17.9 给内存映射文件指定基地址 471 17.10 内存映射文件的实现细节 472 17.11 用内存映射文件在进程间共享 数据 473 17.12 以页交换文件为后备存储器的 内存映射文件 474 Memory-Mapped File Sharing示例 程序 475 17.13 稀疏调拨的内存映射文件 478 Sparse Memory-Mapped File示例 程序 480 第18章 堆 491 18.1 进程的默认堆 491 18.2 为什么要创建额外的堆 492 18.2.1 对组件进行保护 493 18.2.2 更有效的内存管理 493 18.2.3 使内存访问局部化 494 18.2.4 避免线程同步的开销 494 18.2.5 快速释放 495 18.3 如何创建额外的堆 495 18.3.1 从堆中分配内存块 497 18.3.2 调整内存块的大小 498 18.3.3 获得内存块的大小 499 18.3.4 释放内存块 500 18.3.5 销毁堆 500 18.3.6 在C++中使用堆 500 18.4 其他堆函数 503 第IV部分 动态链接库 第19章 DLL基础 509 19.1 DLL和进程的地址空间 510 19.2 纵观全局 512 19.2.1 构建DLL模块 514 19.2.2 构建可执行模块 519 19.2.3 运行可执行模块 522 第20章 DLL高级技术 524 20.1 DLL模块的显式载入和符号链接 524 20.1.1 显式地载入DLL模块 525 20.1.2 显式地卸载DLL模块 529 20.1.3 显式地链接到导出符号 532 20.2 DLL的入口点函数 533 20.2.1 DLL_PROCESS_ATTACH 通知 534 20.2.2 DLL_PROCESS_DETACH 通知 535 20.2.3 DLL_THREAD_ATTACH 通知 537 20.2.4 DLL_THREAD_DETACH 通知 538 20.2.5 DllMain的序列化调用 538 20.2.6 DllMain和C/C++运行库 541 20.3 延迟载入DLL 542 DelayLoadApp示例程序 547 20.4 函数转发器 553 20.5 已知的DLL 553 20.6 DLL重定向 555 20.7 模块的基地址重定位 556 20.8 模块的绑定 562 第21章 线程局部存储区 565 21.1 动态TLS 566 使用动态TLS 568 21.2 静态TLS 570 第22章 DLL注入和API拦截 572 22.1 DLL注入的一个例子 573 22.2 使用注册表来注入DLL 575 22.3 使用Windows挂钩来注入DLL 576 Desktop Item Position Saver(DIPS) 工具 578 22.4 使用远程线程来注入DLL 587 22.4.1 Inject Library示例程序 591 22.4.2 Image Walk DLL 596 22.5 使用木马DLL来注入DLL 598 22.6 把DLL作为调试器来注入 598 22.7 使用CreateProcess来注入 代码 599 22.8 API拦截的一个例子 599 22.8.1 通过覆盖代码来拦截API 600 22.8.2 通过修改模块的导入段来 拦截API 601 22.8.3 Last MessageBox Info示例 程序 604 第V部分 结构化异常处理 第23章 终止处理程序 621 通过实例理解终止处理程序 622 第24章 异常处理程序与软件异常 638 24.1 通过实例理解异常过滤程序 和异常处理程序 638 24.1.1 Funcmeister1函数 639 24.1.2 Funcmeister2函数 639 24.2 EXCEPTION_EXECUTE_ HANDLER 641 24.2.1 一些有用的例子 642 24.2.2 全局展开 645 24.2.3 停止全局展开 647 24.3 EXCEPTION_CONTINUE_ EXECUTION 648 谨慎使用EXCEPTION_CONTINUE_ EXECUTION 649 24.4 EXCEPTION_CONTINUE_ SEARCH 650 24.5 GetExceptionCode 652 24.6 GetExceptionInformation 656 24.7 软件异常 659 第25章 未处理异常、向量化异常处理 与C++异常 663 25.1 UnhandledExceptionFilter函数 详解 665 25.2 即时调试 671 25.3 电子表格示例程序 673 25.4 向量化异常和继续处理程序 681 25.5 C++异常与结构化异常的比较 683 25.6 异常与调试器 684 第26章 错误报告与应用程序恢复 688 26.1 Windows错误报告控制台 688 26.2 可编程的Windows错误报告 691 26.3 对进程中所有的问题报告进行 定制 693 26.4 问题报告的创建与定制 694 26.4.1 创建一个自定义的问题 报告 697 26.4.2 设置报告参数: WerReportSetParameter 698 26.4.3 将小型转储文件放入报告: WerReportAddDump 698 26.4.4 将任意文件放入报告: WerReportAddFile 699 26.4.5 修改对话框文本: WerReportSetUIOption 700 26.4.6 提交错误报告: WerReportSubmit 700 26.4.7 关闭问题报告: WerReportCloseHandle 702 26.4.8 Customized WER示例 程序 702 26.5 应用程序的自动重启与恢复 708 26.5.1 应用程序的自动重启 708 26.5.2 对应用程序恢复的支持 709 附录A 构建环境 713 A.1 CmnHdr.h头文件 713 A.1.1 Microsoft Windows Version 构建选项 713 A.1.2 Unicode构建选项 714 A.1.3 Windows Definitions与编译 警告级别4 714 A.1.4 pragma message辅助宏 715 A.1.5 chINRANGE宏 715 A.1.6 chBEGINTHREADEX宏 715 A.1.7 适用于x86平台的 对DebugBreak的改进 717 A.1.8 创建软件异常码 717 A.1.9 chMB宏 717 A.1.10 chASSERT宏 和chVERIFY宏 717 A.1.11 chHANDLE_DLGMSG宏 718 A.1.12 chSETDLGICONS宏 718 A.1.13 强制编译器寻找 (w)WinMain 入口点函数 718 A.1.14 通过pragma预处理指令来支持 XP风格的用户界面主题 718 附录B 消息处理宏、子控件宏和API宏 724 B.1 消息处理宏 725 B.2 子控件宏 727 B.3 API宏 727 索引 729

2011-09-21

Windows核心编程第五版+源代码1

由于资源比较大,所以资源被分成两次上传. 目录: 第I部分 必备知识 第1章 错误处理 3 1.1 定义自己的错误代码 7 1.2 ErrorShow示例程序 7 第2章 字符和字符串处理 10 2.1 字符编码 11 2.2 ANSI字符和Unicode字符 与字符串数据类型 12 2.3 Windows中的Unicode函数 和ANSI函数 14 2.4 C运行库中的Unicode函数 和ANSI函数 16 2.5 C运行库中的安全字符串函数 17 2.5.1 初识新的安全字符串函数 18 2.5.2 在处理字符串时如何获得 更多控制 21 2.5.3 Windows字符串函数 23 2.6 为何要用Unicode 24 2.7 推荐的字符和字符串处理方式 25 2.8 Unicode与ANSI字符串转换 26 2.8.1 导出ANSI和Unicode DLL 函数 28 2.8.2 判断文本是ANSI还是 Unicode 29 第3章 内核对象 32 3.1 何为内核对象 32 3.1.1 使用计数 34 3.1.2 内核对象的安全性 34 3.2 进程内核对象句柄表 36 3.2.1 创建一个内核对象 37 3.2.2 关闭内核对象 38 3.3 跨进程边界共享内核对象 42 3.3.1 使用对象句柄继承 42 3.3.2 改变句柄的标志 45 3.3.3 为对象命名 46 3.3.4 终端服务命名空间 50 3.3.5 专有命名空间 51 3.3.5 复制对象句柄 58 第II部分 工作机制 第4章 进程 65 4.1 编写第一个Windows应用程序 66 4.1.1 进程实例句柄 71 4.1.2 进程前一个实例的句柄 72 4.1.3 进程的命令行 73 4.1.4 进程的环境变量 74 4.1.5 进程的关联性 79 4.1.6 进程的错误模式 79 4.1.7 进程当前所在的驱动器 和目录 80 4.1.8 进程的当前目录 81 4.1.9 系统版本 82 4.2 CreateProcess函数 85 4.2.1 pszApplicationName 和pszCommandLine参数 86 4.2.2 psaProcess,psaThread 和bInheritHandles参数 87 4.2.3 fdwCreate参数 89 4.2.4 pvEnvironment参数 91 4.2.5 pszCurDir参数 92 4.2.6 psiStartInfo参数 92 4.2.7 ppiProcInfo参数 98 4.3 终止进程 100 4.3.1 主线程的入口点函数返回 100 4.3.2 ExitProcess函数 101 4.3.3 TerminateProcess函数 102 4.3.4 当进程中的所有线程终止时 103 4.3.5 当进程终止运行时 103 4.4 子进程 104 4.5 管理员以标准用户权限运行时 106 4.5.1 自动提升进程的权限 109 4.5.2 手动提升进程的权限 111 4.5.3 何为当前权限上下文 112 4.5.4 枚举系统中正在运行的 进程 114 4.5.5 Process Information示例 程序 115 第5章 作业 121 5.1 对作业中的进程施加限制 124 5.2 将进程放入作业中 131 5.3 终止作业中的所有线程 132 查询作业统计信息 132 5.4 作业通知 135 5.6 Job Lab示例程序 138 第6章 线程基础 140 6.1 何时创建线程 141 6.2 何时不应该创建线程 143 6.3 编写第一个线程函数 144 6.4 CreateThread函数 144 6.4.1 psa参数 145 6.4.2 cbStackSize参数 145 6.4.3 pfnStartAddr和pvParam 参数 146 6.4.4 dwCreateFlags 147 6.4.5 pdwThreadID 147 6.5 终止运行线程 148 6.5.1 线程函数返回 148 6.5.2 ExitThread函数 148 6.5.3 TerminateThread函数 149 6.5.4 进程终止运行时 149 6.5.5 线程终止运行时 150 6.6 线程内幕 150 6.7 C/C++运行库注意事项 153 6.7.1 用_beginthreadex而不要用 CreateThread创建线程 161 6.7.2 绝对不应该调用的C/C++ 运行库函数 161 6.8 了解自己的身份 162 6.8.1 将伪句柄转换为真正的 句柄 163 第7章 线程调度、优先级和关联性 165 7.1 线程的挂起和恢复 166 7.2 进程的挂起和恢复 167 7.3 睡眠 169 7.4 切换到另一个线程 169 7.5 在超线程CPU上切换到另一个 线程 170 7.6 线程的执行时间 170 7.7 在实际上下文中谈CONTEXT 结构 174 7.8 线程优先级 178 7.9 从抽象角度看优先级 179 7.10 优先级编程 182 7.10.1 动态提升线程优先级 185 7.10.2 为前台进程微调调度程序 186 7.10.3 调度I/O请求优先级 186 7.10.4 Scheduling Lab 示例程序 188 7.11 关联性 192 第8章 用户模式下的线程同步 197 8.1 原子访问:Interlocked系列函数 198 8.2 高速缓存行 203 8.3 高级线程同步 205 需要避免使用的一种方法 205 8.4 关键段 207 8.4.1 关键段:细节 209 8.4.2 关键段和旋转锁 212 8.4.3 关键段和错误处理 213 8.5 Slim读/写锁 214 8.6 条件变量 217 8.6.1 Queue示例程序 218 8.6.2 在停止线程时的死锁问题 225 8.6.3 一些有用的窍门和技巧 227 第9章 用内核对象进行线程同步 230 9.1 等待函数 232 9.2 等待成功所引起的副作用 235 9.3 事件内核对象 236 Handshake示例程序 241 9.4 可等待的计时器内核对象 245 9.4.1 让可等待的计时器添加APC 调用 248 9.4.2 计时器的剩余问题 250 9.5 信号量内核对象 251 9.6 互斥量内核对象 253 9.6.1 遗弃问题 255 9.6.2 互斥量与关键段的比较 256 9.6.3 Queue示例程序 256 9.7 线程同步对象速查表 264 9.8 其他的线程同步函数 265 9.8.1 异步设备I/O 265 9.8.2 WaitForInputIdle函数 265 9.8.3 MsgWaitForMultipleObjects(Ex) 函数 266 9.8.4 WaitForDebugEvent函数 267 9.8.5 SignalObjectAndWait函数 267 9.8.6 使用等待链遍历API来检测 死锁 268 第10章 同步设备I/O与异步设备I/O 275 10.1 打开和关闭设备 276 细看CreateFile函数 278 10.2 使用文件设备 285 10.2.1 取得文件的大小 285 10.2.2 设置文件指针的位置 286 10.2.3 设置文件尾 288 10.3 执行同步设备I/O 289 10.3.1 将数据刷新至设备 289 10.3.2 同步I/O的取消 290 10.4 异步设备I/O基础 291 10.4.1 OVERLAPPED结构 292 10.4.2 异步设备I/O的注意事项 294 10.4.3 取消队列中的设备I/O 请求 296 10.5 接收I/O请求完成通知 296 10.5.1 触发设备内核对象 297 10.5.2 触发事件内核对象 298 10.5.3 可提醒I/O 301 10.5.4 I/O完成端口 306 10.5.5 模拟已完成的I/O请求 316 第11章 Windows线程池 324 11.1 情形1:以异步方式调用函数 325 11.1.1 显式地控制工作项 325 11.1.2 Batch示例程序 327 11.2 情形2:每隔一段时间调用一个 函数 330 Timed Message Box示例程序 332 11.3 情形3:在内核对象触发时调用 一个函数 335 11.4 情形4:在异步I/O请求完成时 调用一个函数 337 11.5 回调函数的终止操作 339 11.5.1 对线程池进行定制 340 11.5.2 得体地销毁线程池: 清理组 342 第12章 纤程 345 使用纤程 345 Counter示例程序 349 第III部分 内存管理 第13章 Windows内存体系结构 355 13.1 进程的虚拟地址空间 355 13.2 虚拟地址空间的分区 356 13.2.1 空指针赋值分区 357 13.2.2 用户模式分区 357 13.3 地址空间中的区域 360 13.4 给区域调拨物理存储器 361 13.5 物理存储器和页交换文件 362 不在页交换文件中维护的物理 存储器 363 13.6 页面保护属性 365 13.6.1 写时复制 366 13.6.2 一些特殊的访问保护属性 标志 367 13.7 实例分析 367 区域内部 372 13.8 数据对齐的重要性 375 第14章 探索虚拟内存 379 14.1 系统信息 379 系统信息示例程序 382 14.2 虚拟内存状态 387 14.3 NUMA机器中的内存管理 388 示例程序:虚拟内存状态 389 14.4 确定地址空间的状态 391 14.4.1 VMQuery函数 392 14.4.2 示例程序:虚拟内存映射 397 第15章 在应用程序中使用虚拟内存 400 15.1 预订地址空间区域 400 15.2 给区域调拨物理存储器 402 15.3 同时预订和调拨物理存储器 403 15.4 何时调拨物理存储器 405 15.5 撤销调拨物理存储器及释放区域 407 15.5.1 何时撤销调拨物理存储器 407 15.5.2 虚拟内存分配示例程序 408 15.6 改变保护属性 414 15.7 重置物理存储器的内容 415 MemReset示例程序 417 15.8 地址窗口扩展 419 AWE示例程序 422 第16章 线程栈 429 16.1 C/C++运行库的栈检查函数 433 16.2 Summation示例程序 435 第17章 内存映射文件 440 17.1 映射到内存的可执行文件和DLL 441 17.1.1 同一个可执行文件或DLL的 多个实例不会共享静态 数据 442 17.1.2 在同一个可执行文件或DLL 的多个实例间共享静态 数据 444 17.1.3 Application Instances示例 程序 449 17.2 映射到内存的数据文件 451 17.2.1 方法1:一个文件,一块 缓存 451 17.2.2 方法2:两个文件,一块 缓存 452 17.2.3 方法3:一个文件,两块 缓存 452 17.2.4 方法4:一个文件,零个 缓存 453 17.3 使用内存映射文件 453 17.3.1 第1步:创建或打开文件 内核对象 454 17.3.2 第2步:创建文件映射 内核对象 455 17.3.3 第3步:将文件的数据映射 到进程的地址空间 458 17.3.4 第4步:从进程的地址空间 撤销对文件数据的映射 461 17.3.5 第5步和第6步:关闭文件 映射对象和文件对象 462 17.6 File Reverse示例程序 463 17.7 用内存映射文件来处理大文件 469 17.8 内存映射文件和一致性 470 17.9 给内存映射文件指定基地址 471 17.10 内存映射文件的实现细节 472 17.11 用内存映射文件在进程间共享 数据 473 17.12 以页交换文件为后备存储器的 内存映射文件 474 Memory-Mapped File Sharing示例 程序 475 17.13 稀疏调拨的内存映射文件 478 Sparse Memory-Mapped File示例 程序 480 第18章 堆 491 18.1 进程的默认堆 491 18.2 为什么要创建额外的堆 492 18.2.1 对组件进行保护 493 18.2.2 更有效的内存管理 493 18.2.3 使内存访问局部化 494 18.2.4 避免线程同步的开销 494 18.2.5 快速释放 495 18.3 如何创建额外的堆 495 18.3.1 从堆中分配内存块 497 18.3.2 调整内存块的大小 498 18.3.3 获得内存块的大小 499 18.3.4 释放内存块 500 18.3.5 销毁堆 500 18.3.6 在C++中使用堆 500 18.4 其他堆函数 503 第IV部分 动态链接库 第19章 DLL基础 509 19.1 DLL和进程的地址空间 510 19.2 纵观全局 512 19.2.1 构建DLL模块 514 19.2.2 构建可执行模块 519 19.2.3 运行可执行模块 522 第20章 DLL高级技术 524 20.1 DLL模块的显式载入和符号链接 524 20.1.1 显式地载入DLL模块 525 20.1.2 显式地卸载DLL模块 529 20.1.3 显式地链接到导出符号 532 20.2 DLL的入口点函数 533 20.2.1 DLL_PROCESS_ATTACH 通知 534 20.2.2 DLL_PROCESS_DETACH 通知 535 20.2.3 DLL_THREAD_ATTACH 通知 537 20.2.4 DLL_THREAD_DETACH 通知 538 20.2.5 DllMain的序列化调用 538 20.2.6 DllMain和C/C++运行库 541 20.3 延迟载入DLL 542 DelayLoadApp示例程序 547 20.4 函数转发器 553 20.5 已知的DLL 553 20.6 DLL重定向 555 20.7 模块的基地址重定位 556 20.8 模块的绑定 562 第21章 线程局部存储区 565 21.1 动态TLS 566 使用动态TLS 568 21.2 静态TLS 570 第22章 DLL注入和API拦截 572 22.1 DLL注入的一个例子 573 22.2 使用注册表来注入DLL 575 22.3 使用Windows挂钩来注入DLL 576 Desktop Item Position Saver(DIPS) 工具 578 22.4 使用远程线程来注入DLL 587 22.4.1 Inject Library示例程序 591 22.4.2 Image Walk DLL 596 22.5 使用木马DLL来注入DLL 598 22.6 把DLL作为调试器来注入 598 22.7 使用CreateProcess来注入 代码 599 22.8 API拦截的一个例子 599 22.8.1 通过覆盖代码来拦截API 600 22.8.2 通过修改模块的导入段来 拦截API 601 22.8.3 Last MessageBox Info示例 程序 604 第V部分 结构化异常处理 第23章 终止处理程序 621 通过实例理解终止处理程序 622 第24章 异常处理程序与软件异常 638 24.1 通过实例理解异常过滤程序 和异常处理程序 638 24.1.1 Funcmeister1函数 639 24.1.2 Funcmeister2函数 639 24.2 EXCEPTION_EXECUTE_ HANDLER 641 24.2.1 一些有用的例子 642 24.2.2 全局展开 645 24.2.3 停止全局展开 647 24.3 EXCEPTION_CONTINUE_ EXECUTION 648 谨慎使用EXCEPTION_CONTINUE_ EXECUTION 649 24.4 EXCEPTION_CONTINUE_ SEARCH 650 24.5 GetExceptionCode 652 24.6 GetExceptionInformation 656 24.7 软件异常 659 第25章 未处理异常、向量化异常处理 与C++异常 663 25.1 UnhandledExceptionFilter函数 详解 665 25.2 即时调试 671 25.3 电子表格示例程序 673 25.4 向量化异常和继续处理程序 681 25.5 C++异常与结构化异常的比较 683 25.6 异常与调试器 684 第26章 错误报告与应用程序恢复 688 26.1 Windows错误报告控制台 688 26.2 可编程的Windows错误报告 691 26.3 对进程中所有的问题报告进行 定制 693 26.4 问题报告的创建与定制 694 26.4.1 创建一个自定义的问题 报告 697 26.4.2 设置报告参数: WerReportSetParameter 698 26.4.3 将小型转储文件放入报告: WerReportAddDump 698 26.4.4 将任意文件放入报告: WerReportAddFile 699 26.4.5 修改对话框文本: WerReportSetUIOption 700 26.4.6 提交错误报告: WerReportSubmit 700 26.4.7 关闭问题报告: WerReportCloseHandle 702 26.4.8 Customized WER示例 程序 702 26.5 应用程序的自动重启与恢复 708 26.5.1 应用程序的自动重启 708 26.5.2 对应用程序恢复的支持 709 附录A 构建环境 713 A.1 CmnHdr.h头文件 713 A.1.1 Microsoft Windows Version 构建选项 713 A.1.2 Unicode构建选项 714 A.1.3 Windows Definitions与编译 警告级别4 714 A.1.4 pragma message辅助宏 715 A.1.5 chINRANGE宏 715 A.1.6 chBEGINTHREADEX宏 715 A.1.7 适用于x86平台的 对DebugBreak的改进 717 A.1.8 创建软件异常码 717 A.1.9 chMB宏 717 A.1.10 chASSERT宏 和chVERIFY宏 717 A.1.11 chHANDLE_DLGMSG宏 718 A.1.12 chSETDLGICONS宏 718 A.1.13 强制编译器寻找 (w)WinMain 入口点函数 718 A.1.14 通过pragma预处理指令来支持 XP风格的用户界面主题 718 附录B 消息处理宏、子控件宏和API宏 724 B.1 消息处理宏 725 B.2 子控件宏 727 B.3 API宏 727 索引 729

2011-09-21

Windows核心编程第四版+源代码

目 录 译者序 前言 第一部分 程序员必读 第1章 对程序错误的处理 1 1.1 定义自己的错误代码 4 1.2 ErrorShow示例应用程序 5 第2章 Unicode 11 2.1 字符集 11 2.1.1 单字节与双字节字符集 11 2.1.2 Unicode:宽字节字符集 12 2.2 为什么使用Unicode 13 2.3 Windows 2000与Unicode 13 2.4 Windows 98与Unicode 13 2.5 Windows CE与Unicode 14 2.6 需要注意的问题 14 2.7 对COM的简单说明 14 2.8 如何编写Unicode源代码 15 2.8.1 C运行期库对Unicode的支持 15 2.8.2 Windows定义的Unicode数据类型 17 2.8.3 Windows中的Unicode函数和ANSI 函数 17 2.8.4 Windows字符串函数 19 2.9 成为符合ANSI和Unicode的应用程序 19 2.9.1 Windows字符串函数 19 2.9.2 资源 22 2.9.3 确定文本是ANSI文本还是Unicode 文本 22 2.9.4 在Unicode与ANSI之间转换字符串 23 第3章 内核对象 27 3.1 什么是内核对象 27 3.1.1 内核对象的使用计数 27 3.1.2 安全性 28 3.2 进程的内核对象句柄表 30 3.2.1 创建内核对象 30 3.2.2 关闭内核对象 32 3.3 跨越进程边界共享内核对象 32 3.3.1 对象句柄的继承性 32 3.3.2 改变句柄的标志 35 3.3.3 命名对象 36 3.3.4 终端服务器的名字空间 39 3.3.5 复制对象句柄 39 第二部分 编程的具体方法 第4章 进程 45 4.1 编写第一个Windows应用程序 46 4.1.1 进程的实例句柄 49 4.1.2 进程的前一个实例句柄 50 4.1.3 进程的命令行 50 4.1.4 进程的环境变量 51 4.1.5 进程的亲缘性 54 4.1.6 进程的错误模式 54 4.1.7 进程的当前驱动器和目录 54 4.1.8 进程的当前目录 55 4.1.9 系统版本 56 4.2 CreateProcess函数 58 4.2.1 pszApplicationName和 pszCommandLine 59 4.2.2 psa Process、psa Thread和 binherit Handles 60 4.2.3 fdwCreate 62 4.2.4 pvEnvironment 64 4.2.5 pszCurDir 64 4.2.6 psiStartInfo 64 4.2.7 ppiProcInfo 67 4.3 终止进程的运行 69 4.3.1 主线程的进入点函数返回 69 4.3.2 ExitProcess函数 69 4.3.3 TerminateProcess函数 70 4.3.4 进程终止运行时出现的情况 71 4.4 子进程 72 4.5 枚举系统中运行的进程 73 第5章 作业 91 5.1 对作业进程的限制 93 5.2 将进程放入作业 99 5.3 终止作业中所有进程的运行 99 5.4 查询作业统计信息 100 5.5 作业通知信息 103 5.6 JobLab示例应用程序 104 第6章 线程的基础知识 121 6.1 何时创建线程 121 6.2 何时不能创建线程 122 6.3 编写第一个线程函数 123 6.4 CreateThread函数 124 6.4.1 psa 124 6.4.2 cbStack 124 6.4.3 pfnStartAddr和pvParam 125 6.4.4 fdwCreate 126 6.4.5 pdwThreadID 126 6.5 终止线程的运行 127 6.5.1 线程函数返回 127 6.5.2 ExitThread函数 127 6.5.3 TerminateThread函数 127 6.5.4 在进程终止运行时撤消线程 128 6.5.5 线程终止运行时发生的操作 128 6.6 线程的一些性质 129 6.7 C/C++运行期库的考虑 131 6.7.1 Oops—错误地调用了Create Thread 138 6.7.2 不应该调用的C/C++运行期库函数 138 6.8 对自己的ID概念应该有所了解 139 第7章 线程的调度、优先级和亲缘性 142 7.1 暂停和恢复线程的运行 143 7.2 暂停和恢复进程的运行 144 7.3 睡眠方式 145 7.4 转换到另一个线程 145 7.5 线程的运行时间 146 7.6 运用环境结构 148 7.7 线程的优先级 152 7.8 对优先级的抽象说明 153 7.9 程序的优先级 156 7.9.1 动态提高线程的优先级等级 158 7.9.2 为前台进程调整调度程序 159 7.9.3 Scheduling Lab示例应用程序 160 7.10 亲缘性 167 第8章 用户方式中线程的同步 172 8.1 原子访问:互锁的函数家族 172 8.2 高速缓存行 177 8.3 高级线程同步 178 8.4 关键代码段 180 8.4.1 关键代码段准确的描述 182 8.4.2 关键代码段与循环锁 185 8.4.3 关键代码段与错误处理 185 8.4.4 非常有用的提示和技巧 186 第9章 线程与内核对象的同步 190 9.1 等待函数 191 9.2 成功等待的副作用 194 9.3 事件内核对象 195 9.4 等待定时器内核对象 204 9.4.1 让等待定时器给APC项排队 207 9.4.2 定时器的松散特性 209 9.5 信标内核对象 210 9.6 互斥对象内核对象 211 9.6.1 释放问题 213 9.6.2 互斥对象与关键代码段的比较 214 9.6.3 Queue示例应用程序 214 9.7 线程同步对象速查表 223 9.8 其他的线程同步函数 224 9.8.1 异步设备I/O 224 9.8.2 WaitForInputIdle 224 9.8.3 MsgWaitForMultipleObjects (Ex) 225 9.8.4 WaitForDebugEvent 225 9.8.5 SingleObjectAndWait 226 第10章 线程同步工具包 228 10.1 实现关键代码段:Optex 228 10.2 创建线程安全的数据类型和反信标 239 10.3 单个写入程序/多个阅读程序的保护 251 10.4 实现一个WaitForMultipleExpressions 函数 259 第11章 线程池的使用 274 11.1 方案1:异步调用函数 275 11.2 方案2:按规定的时间间隔调用函数 277 11.3 方案3:当单个内核对象变为已通知状态 时调用函数 283 11.4 方案4:当异步I/O请求完成运行时调用 函数 285 第12章 纤程 287 12.1 纤程的操作 287 12.2 Counter示例应用程序 289 第三部分 内 存 管 理 第13章 Windows的内存结构 299 13.1 进程的虚拟地址空间 299 13.2 虚拟地址空间如何分区 300 13.2.1 NuLL 指针分配的分区—适用于 Windows 2000和Windows 98 300 13.2.2 MS-DOS/16位Windows 应用程序兼容 分区—仅适用于Windows 98 301 13.2.3 用户方式分区—适用于Windows 2000 和Windows 98 301 13.2.4 64 KB禁止进入的分区—仅适用 于Windows 2000 302 13.2.5 共享的MMF分区—仅适用于 Windows 98 303 13.2.6 内核方式分区—适用于Windows 2000和Windows 98 303 13.3 地址空间中的区域 303 13.4 提交地址空间区域中的物理存储器 304 13.5 物理存储器与页文件 304 13.6 保护属性 307 13.6.1 Copy-On-Write 访问 308 13.6.2 特殊的访问保护属性的标志 309 13.7 综合使用所有的元素 309 13.7.1 区域的内部情况 312 13.7.2 与Windows 98地址空间的差别 315 13.8 数据对齐的重要性 319 第14章 虚拟内存 323 14.1 系统信息 323 14.2 虚拟内存的状态 330 14.3 确定地址空间的状态 336 14.3.1 VMQuery函数 337 14.3.2 虚拟内存表示例应用程序 343 第15章 在应用程序中使用虚拟内存 354 15.1 在地址空间中保留一个区域 354 15.2 在保留区域中的提交存储器 355 15.3 同时进行区域的保留和内存的提交 356 15.4 何时提交物理存储器 357 15.5 回收虚拟内存和释放地址空间区域 358 15.5.1 何时回收物理存储器 359 15.5.2 虚拟内存分配的示例应用程序 360 15.6 改变保护属性 368 15.7 清除物理存储器的内容 369 15.8 地址窗口扩展—适用于 Windows 2000 372 第16章 线程的堆栈 385 16.1 Windows 98下的线程堆栈 387 16.2 C/C++运行期库的堆栈检查函数 389 16.3 Summation示例应用程序 390 第17章 内存映射文件 397 17.1 内存映射的可执行文件和DLL 文件 397 17.1.1 可执行文件或DLL的多个实例 不能共享静态数据 398 17.1.2 在可执行文件或DLL的多个实 例之间共享静态数据 400 17.1.3 AppInst示例应用程序 404 17.2 内存映射数据文件 409 17.2.1 方法 1:一个文件,一个缓存 409 17.2.2 方法 2:两个文件,一个缓存 409 17.2.3 方法 3:一个文件,两个缓存 410 17.2.4 方法 4:一个文件,零缓存 410 17.3 使用内存映射文件 410 17.3.1 步骤 1:创建或打开文件内核 对象 411 17.3.2 步骤 2:创建一个文件映射内核 对象 412 17.3.3 步骤 3:将文件数据映射到进程 的地址空间 414 17.3.4 步骤4:从进程的地址空间中撤消 文件数据的映像 416 17.3.5 步骤 5和步骤 6:关闭文件映射对象 和文件对象 417 17.3.6 文件倒序示例应用程序 418 17.4 使用内存映射文件来处理大文件 426 17.5 内存映射文件与数据视图的相关性 427 17.6 设定内存映射文件的基地址 428 17.7 实现内存映射文件的具体方法 429 17.8 使用内存映射文件在进程之间共享 数据 431 17.9 页文件支持的内存映射文件 431 17.10 稀疏提交的内存映射文件 438 第18章 堆栈 451 18.1 进程的默认堆栈 451 18.2 为什么要创建辅助堆栈 452 18.2.1 保护组件 452 18.2.2 更有效的内存管理 453 18.2.3 进行本地访问 453 18.2.4 减少线程同步的开销 453 18.2.5 迅速释放堆栈 453 18.3 如何创建辅助堆栈 454 18.3.1 从堆栈中分配内存块 455 18.3.2 改变内存块的大小 456 18.3.3 了解内存块的大小 456 18.3.4 释放内存块 457 18.3.5 撤消堆栈 457 18.3.6 用C++程序来使用堆栈 457 18.4 其他堆栈函数 460 第四部分 动态链接库 第19章 DLL基础 463 19.1 DLL与进程的地址空间 464 19.2 DLL的总体运行情况 465 19.3 创建DLL模块 467 19.3.1 输出的真正含义是什么 469 19.3.2 创建用于非Visual C++工具 的DLL 471 19.4 创建可执行模块 472 19.5 运行可执行模块 474 第20章 DLL的高级操作技术 477 20.1 DLL模块的显式加载和 符号链接 477 20.1.1 显式加载DLL模块 478 20.1.2 显式卸载DLL模块 479 20.1.3 显式链接到一个输出符号 480 20.2 DLL的进入点函数 481 20.2.1 DLL_PROCESS_ATTACH通知 482 20.2.2 DLL_PROCESS_DETACH通知 483 20.2.3 DLL_THREAD_ATTACH通知 485 20.2.4 DLL_THREAD_DETACH通知 485 20.2.5 顺序调用DllMain 486 20.2.6 DllMain与C/C++运行期库 488 20.3 延迟加载DLL 489 20.4 函数转发器 499 20.5 已知的DLL 499 20.6 DLL转移 500 20.7 改变模块的位置 501 20.8 绑定模块 506 第21章 线程本地存储器 509 21.1 动态TLS 509 21.2 静态TLS 513 第22章 插入DLL和挂接API 515 22.1 插入DLL:一个例子 515 22.2 使用注册表来插入DLL 517 22.3 使用Windows挂钩来插入DLL 518 22.4 使用远程线程来插入DLL 531 22.4.1 Inject Library 示例应用程序 534 22.4.2 Image Walk DLL 541 22.5 使用特洛伊DLL来插入DLL 544 22.6 将DLL作为调试程序来插入 544 22.7 用Windows 98上的内存映射文件 插入代码 544 22.8 用CreateProcess插入代码 544 22.9 挂接API的一个示例 545 22.9.1 通过改写代码来挂接API 546 22.9.2 通过操作模块的输入节来挂接API 546 22.9.3 LastMsgBoxInfo示例应用程序 549 第五部分 结构化异常处理 第23章 结束处理程序 565 23.1 通过例子理解结束处理程序 566 23.2 Funcenstein1 566 23.3 Funcenstein2 566 23.4 Funcenstein3 568 23.5 Funcfurter1 568 23.6 突击测验:FuncaDoodleDoo 569 23.7 Funcenstein4 570 23.8 Funcarama1 571 23.9 Funcarama2 572 23.10 Funcarama3 572 23.11 Funcarama4:最终的边界 573 23.12 关于finally块的说明 574 23.13 Funcfurter2 575 23.14 SEH结束处理示例程序 576 第24章 异常处理程序和软件异常 578 24.1 通过例子理解异常过滤器和异常处理 程序 578 24.1.1 Funcmeister1 578 24.1.2 Funcmeister2 579 24.2 EXCEPTION_EXECUTE_HANDLER 580 24.2.1 一些有用的例子 581 24.2.2 全局展开 583 24.2.3 暂停全局展开 585 24.3 EXCEPTION_CONTINUE_ EXECUTION 586 24.4 EXCEPTION_CONTINUE_ SEARCH 588 24.5 Get Exception Code 589 24.6 Get Exception Information 592 24.7 软件异常 595 第25章 未处理异常和C++异常 598 25.1 即时调试 600 25.2 关闭异常消息框 601 25.2.1 强制进程终止运行 601 25.2.2 包装一个线程函数 601 25.2.3 包装所有的线程函数 601 25.2.4 自动调用调试程序 602 25.3 程序员自己调用UnhandledException Filter 602 25.4 UnhandledExceptionFilter函数的一些 细节 603 25.5 异常与调试程序 604 25.6 C++异常与结构性异常的对比 618 第六部分 窗 口 第26章 窗口消息 623 26.1 线程的消息队列 623 26.2 将消息发送到线程的消息队列中 625 26.3 向窗口发送消息 626 26.4 唤醒一个线程 630 26.4.1 队列状态标志 630 26.4.2 从线程的队列中提取消息的 算法 631 26.4.3 利用内核对象或队列状态标 志唤醒线程 634 26.5 通过消息发送数据 636 26.6 Windows如何处理ANSI/Unicode 字符和字符串 642 第27章 硬件输入模型和局部输入状态 645 27.1 原始输入线程 645 27.2 局部输入状态 646 27.2.1 键盘输入与焦点 647 27.2.2 鼠标光标管理 649 27.3 将虚拟输入队列同局部输入状态挂接 在一起 651 27.3.1 LISLab 示例程序 652 27.3.2 LISWatch 示例程序 666 第七部分 附 录 附录A 建立环境 675 附录B 消息分流器、子控件宏和API宏 686

2011-09-16

范型编程与STL(PDF格式) 侯捷翻译

STL经典教程 范型编程与STL 范型编程与STL侯捷翻译

2011-08-18

VC++数据库编程(PDF格式)

最新VC++数据库编程 VC++数据库开发 C++数据库总结

2011-05-23

C++STL中文版.pdf

最新STL学习教程 C++STL中文版 C++STL

2011-05-13

Windows程序设计第5版(PDF格式)+源代码.

Windows程序设计第5版(PDF格式)+源代码

2011-04-26

深入浅出MFC(简体版PDF格式)+源代码

深入浅出MFC第二版(简体版PDF格式)+源代码 MFC经典教材

2011-04-26

DWR学习资料汇总(PDF)

学习DWR从这里开始,让你快速掌握DWR技术.

2008-12-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除