《老兵新传 Visual Basic核心编程及通用模块开发》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:张宁编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2012
  • ISBN:9787302283102
  • 页数:734 页
图书介绍:本书旨在面向VB软件开发的实践应用,给出了常用高级功能的实现技术、以及常见编程问题的解决方案;并将一些作者编写的、曾大量投入实际软件开发实践和多次改进过的、较成熟的模块作为实例与读者共享。帮助读者在VB环境下开发通用的、可重用的以及高效的代码模块,仅通过最简单的接口调用,就能实现很多高级功能或解决常见的开发难题,使读者不仅可以使用VB开发出功能更强大的软件,而且可以胜任更加快速的开发。

第一篇 高级技术篇 2

第1章 万丈高楼平地起,一劳永逸打地基——知识准备 2

1.1使用Windows API函数 2

1.1.1 API函数的声明 2

1.1.2使用API函数的注意事项 6

1.2模块化编程 7

1.2.1我能在一天之内做出一个软件吗 7

1.2.2用标准模块还是类模块 7

1.2.3怎样创建类模块 8

1.3编程风格 12

1.3.1变量在使用前一定要定义 12

1.3.2尽量不要用Vartant数据类型 12

1.3.3代码的缩进和换行 13

1.3.4避免重复用对象名称做一串调用 13

1.3.5 Boolean型条件表达式的写法 15

1.3.6字符串为空串的判断 15

1.3.7能用常量就不要用函数求值 15

1.3.8数组下标从1开始 16

1.3.9用Optional选项定义函数的参数 16

1.3.10不能滥用Goto语句不代表不能用Goto语句 17

1.3.11尽量少用ActiveX控件 17

1.4条件编译 18

1.4.1什么是条件编译 18

1.4.2条件编译有什么用 18

1.5获取资料 20

1.5.1 MSDN 20

1.5.2借助Visual C+++的头文件 22

1.5.3其他资料 23

第2章 这个可以有——在VB中使用指针 24

2.1在VB中使用指针变量 24

2.1.1什么是指针 24

2.1.2如何实现指针变量 24

2.2 VarPtr, StrPtr, ObjPtr函数和AddressOf运算符 25

2.2.1内联类型和指针类型 25

2.2.2 VarPtr, StrPtr和ObjPtr函数 27

2.2.3 AddressOf运算符 27

2.3 CopyMemory函数 28

2.3.1 CopyMemory函数的声明和功能 28

2.3.2 CopyMemory函数用于内联类型的数据传递 28

2.3.3 CopyMemory函数用于字符串类型的数据传递 29

2.3.4对象的弱引用 30

2.4在VB中使用指针程序举例 32

2.4.1使用指针实现不同类型数据的交换 32

2.4.2使用指针实现不同窗体模块的数据交换 33

2.4.3不使用数组类型的参数向函数传递数组 34

2.4.4用一个Long型参数向函数传递任意类型任意大小的数据 35

2.5部分字节运算的问题和解决办法 36

2.5.1 Or按位或运算 36

2.5.2取长整数的高位和低位 40

第3章 不做数据的奴隶——常用数据结构 42

3.1何谓数据结构 42

3.2堆栈 43

3.2.1什么是堆栈 43

3.2.2堆栈的基本算法 44

3.2.3堆栈的通用模块实现 44

3.2.4堆栈通用模块的使用 51

3.3哈希表 53

3.3.1什么是哈希表 53

3.3.2哈希表的基本算法 54

3.3.3哈希表的通用模块实现 55

3.3.4哈希表通用模块的使用 75

3.3.5哈希表类模块与VB的Collection对象的效率比较 77

3.4带“回收站”的数组 79

3.4.1基本思想 79

3.4.2程序实现 79

第4章 青出于蓝胜于蓝——子类技术 84

4.1 Windows窗口和消息驱动机制 84

4.1.1窗口 84

4.1.2窗口的消息驱动机制 85

4.1.3消息的组织和发送 87

4.1.4 Visual Basic事件与消息 89

4.2子类技术及其常规实现 89

4.2.1子类技术简介 89

4.2.2子类技术的常规实现 91

4.2.3子类技术常规实现的问题 96

4.3开发实现子类技术的通用模块 97

4.3.1通用模块的目标 97

4.3.2封装子类信息的类模块 98

4.3.3实现子类技术的标准模块 106

4.3.4子类技术通用模块小结 118

4.4子类技术通用模块的用法举例 119

4.4.1标准模块Module 1的设计 120

4.4.2窗体Form 1的设计 121

4.4.3程序的运行效果 122

第5章 想解雇ActiveX通用控件吗——使用API函数创建控件 124

5.1控件的深入理解 124

5.1.1 ActiveX控件 124

5.1.2 d11通用控件库 125

5.1.3控件的运行机制 128

5.1.4简单实例——用API函数创建Animation控件 136

5.2用API函数创建控件的模块划分 140

5.2.1实现控件的类模块 140

5.2.2支持的标准模块 143

5.2.3其他“黑匣子”模块 144

5.2.4模块划分小结 144

5.3 md1APIControlsSupport标准模块 145

5.3.1公有常量定义 146

5.3.2控件类型的枚举类型定义 147

5.3.3管理已创建控件 149

5.3.4子类处理的自定义窗口程序 151

5.3.5标准模块的其他内容 156

5.4 clsControlBase基类模块 157

5.4.1 API函数声明和常量、类型定义 157

5.4.2创建控件 159

5.4.3实现控件的共有属性 161

5.4.4实现控件的共有方法 176

5.4.5类模块的Initialize和Terminate事件过程 181

5.5实现跳格表控件的控件类模块clsAPITabs 182

5.5.1 API函数声明和常量、类型定义 183

5.5.2继承的“变通”实现 184

5.5.3创建跳格表控件 185

5.5.4实现跳格表控件的属性 188

5.5.5实现跳格表控件的方法 190

5.5.6实现跳格表控件的事件 193

5.5.7 clsAPITabs控件类模块的应用实例 196

5.6实现状态栏控件的控件类模块clsAPIStaBar 198

5.6.1 API函数声明和常量、类型定义 199

5.6.2继承的“变通”实现 200

5.6.3创建状态栏控件 200

5.6.4状态栏分栏和分栏属性 202

5.6.5状态栏的其他功能 210

5.6.6实现状态栏的事件 211

5.6.7 clsAPIStaBar控件类模块的应用实例 212

5.7实现丰富格式文本框控件的控件类模块clsAPIRichTextBox 215

5.7.1 RichTextBox控件加载和继承的“变通”实现 215

5.7.2创建RichTextBox控件 216

5.7.3管理文本和RTF代码 219

5.7.4选择区域 227

5.7.5文本的剪切、复制、粘贴 229

5.7.6设置文本格式 229

5.7.7实现RichTextBox的事件 232

5.7.8实现RichTextBox的其他功能 233

5.7.9 clsAPIRichTextBox控件类模块的应用实例 234

第6章 路见不平一声吼,强大功能我也有——常见VB系统功能问题和解决 237

6.1长字符串处理 237

6.1.1 VB系统中的字符串连接运算及问题 237

6.1.2解决方案——clsLongString类模块 240

6.1.3改进字符串连接效率测试 250

6.2多种分行格式的纯文本文件的按行读取 251

6.2.1 VB按行读取文本文件的常规方法及问题 251

6.2.2二进制读取文本文件 253

6.2.3设计类模块支持多种分行格式 255

6.2.4类模块的使用 274

6.3部分字符串函数的增强 275

6.3.1 Split函数的增强 275

6.3.2 Trim函数的增强 281

6.3.3判断Collection对象的键是否存在 283

6.4解决控件不支持鼠标滚轮的问题 284

6.4.1鼠标滚轮消息WMMOUSEWHEEL 285

6.4.2窗口滚动消息WM HSCROLL和WM_ VSCROLL 285

6.4.3解决鼠标滚轮问题的通用模块 287

6.5增强VB的滚动条控件 289

6.5.1基本思路 290

6.5.2实现技术 291

6.5.3类模块的完整代码 297

6.5.4增强滚动条通用模块使用举例 303

第7章 让你的程序在哪都不out———使程序支持多国语言版 308

7.1多国语言支持的主要问题 308

7.2字符串资源和资源加载 309

7.2.1字符串资源 309

7.2.2 VB的资源编辑器 310

7.2.3解决不同语言语法元素顺序问题 311

7.3编写支持多国语言版程序的通用模块 313

7.3.1公有函数 313

7.3.2条件编译的全局元素 314

7.3.3开发多国语言版的程序小结 316

7.4支持多国语言版的程序实例 317

7.4.1简单实例 317

7.4.2改造clsReadLines类模块 319

第二篇 功能模块篇 324

第8章 程序骨感没人爱——Windows绘图和图形界面增强 324

8.1 GDI的基本原理 324

8.1.1色彩和坐标 324

8.1.2设备环境简介 327

8.1.3 GDI对象 330

8.2高级文本描绘的类模块clsDrawText 335

8.2.1 DrawText函数 335

8.2.2 clsDrawText类模块的开发 338

8.2.3 clsDrawText使用的实例程序 349

8.3绘制Windows图形元素 352

8.3.1绘制蚀刻线 352

8.3.2绘制3D效果的边框 354

8.3.3绘制Windows按钮元素 356

8.3.4绘制首尾移动样式的按钮 361

8.4绘制透明位图 363

8.4.1位图简介 364

8.4.2光栅操作 366

8.4.3绘制透明位图 367

8.4.4程序实例 371

8.5为静态图形添加图形热区 372

8.5.1图形热区实现的基本思路 372

8.5.2开发图形热区管理类模块clsGraphCoords 373

8.5.3图形热区编程实例 381

8.6改变窗体透明度 383

8.6.1设置窗体透明度的API函数 384

8.6.2编写类模块封装设置窗体透明度的API函数 384

8.6.3程序实例 388

8.7使控件具有Windows XP风格的外观 391

8.7.1 XP风格外观的控件探秘 391

8.7.2使应用程序中的控件具有XP风格 393

8.7.3程序实例 397

第9章 搞定这个怕什么?你懂我的——菜单高级控制和菜单选择助手 398

9.1编写菜单控制标准模块mdlMenuFuncs 399

9.1.1菜单的句柄 399

9.1.2获取菜单项信息 402

9.1.3设置菜单项信息 406

9.1.4设置菜单项高亮状态 412

9.1.5返回或设置子菜单默认项 412

9.1.6获得菜单中的菜单项总数 413

9.1.7系统菜单控制 414

9.2菜单选择助手 415

9.2.1基本思路 416

9.2.2在mdlMenuFuncs中添加的完整代码 419

9.2.3 clsMenuSelAssist的完整代码 420

9.3程序实例 423

9.3.1菜单选择助手功能演示 423

9.3.2标准模块mdlMenuFuncs部分功能演示 423

第10章 玩转注册表,换汤不换药——简化ini文件和注册表编程 426

10.1 ini文件和使用ini文件保存信息 426

10.1.1 ini文件的结构 426

10.1.2 ini文件读写的主要API函数 427

10.1.3封装ini文件的读写操作 428

10.1.4 ini文件读写的实例程序 429

10.2注册表结构简介 429

10.2.1控制项 430

10.2.2子项 432

10.2.3键值 432

10.3编写通用模块封装常用注册表读写操作 433

10.3.1项的句柄和项的打开、关闭 433

10.3.2固定子项位置 435

10.3.3.创建或删除子项 436

10.3.4读取子项键值 438

10.3.5设置子项键值 440

10.3.6删除子项键值 442

10.3.7读取注册表任意位置数据 443

10.3.8设置文件关联 444

10.4注册表编程实例 448

10.4.1记忆窗体位置 448

10.4.2在固定子项下读写数据 448

10.4.3建立和删除文件关联 449

第11章 真的很给力——文件系统编程 451

11.1文件系统操作 451

11.1.1列文件目录 451

11.1.2判断文件(夹)存在 457

11.1.3文件名操作函数 461

11.1.4创建文件夹 466

11.1.5文件的复制、移动和删除 467

11.1.6获得驱动器信息 470

11.1.7获得临时文件 475

11.2获得文件属性 477

11.2.1文件名属性 477

11.2.2文件大小和文件属性 478

11.2.3文件时间属性 480

11.2.4文件属性对话框 483

11.2.5文件类型字符串和文件图标 484

11.3打开/保存文件对话框的通用模块 491

11.3.1打开/保存文件对话框的相关API函数 491

11.3.2编写通用模块 494

11.3.3通用模块使用实例 503

11.4浏览文件夹对话框的通用模块 505

11.4.1浏览文件夹对话框的相关API函数 505

11.4.2编写通用模块 507

11.4.3通用模块使用实例 509

11.5制作自己的简易资源管理器 509

第12章非“程”勿扰——其他常见系统功能 518

12.1运行应用程序 518

12.1.1运行程序或打开文档 518

12.1.2运行程序并等待程序结束 522

12.1.3程序实例 528

12.2监视Windows剪贴板 530

12.2.1剪贴板查看器和查看器链 530

12.2.2使VB程序具有剪贴板监视功能的通用模块 532

12.2.3剪贴板监视程序举例 536

12.3设置系统热键 537

12.3.1设置系统热键的有关知识 538

12.3.2实现系统热键通用模块的完整代码 541

12.3.3程序实例 548

12.4添加系统托盘图标 550

12.4.1相关API函数 550

12.4.2实现系统托盘图标通用模块的完整代码 552

12.4.3程序实例 557

第三篇 应用模块篇 562

第13章 我是勤奋的“猪”,我很乖——智能组合框 562

13.1智能列表项维护 562

13.1.1类模块对象与组合框控件的关联 562

13.1.2不重复地添加列表项 563

13.1.3列表项的保存和加载 565

13.2实现按汉字拼音字头的中文自动输入 568

13.2.1实现原理 568

13.2.2获得汉字的拼音字头 570

13.2.3查找拼音字头 572

13.2.4实现按拼音字头自动输入 573

13.2.5自动提示 575

13.3智能组合框的其他功能 578

13.3.1返回或设置下拉列表是否被拉下 578

13.3.2设置下拉列表的高度 579

13.3.3获取或设置下拉列表的最小宽度 579

13.4智能组合框应用实例 580

第14章“时”上编程——用API函数实现定时器 583

14.1用API函数创建定时器的通用模块 583

14.1.1定时器简介 583

14.1.2使用API函数创建定时器 584

14.1.3定时器支持模块 mdlTimerSupport 585

14.1.4定时器类模块clsTimer 587

14.2定时器通用模块应用实例 590

14.2.1类模块内的定时器使用 590

14.2.2标准模块内的定时器使用 591

14.3通过定时器变通实现多线程 592

第15章 谁说这事不能说太细——进度指示 595

15.1编写长时间运行程序需注意的主要问题 595

15.2使程序在运行途中响应用户按下【取消】按钮 599

15.3开发工作助手类模块clsOperAssistant 601

15.3.1数据定义 601

15.3.2更新进度指示 606

15.3.3显示简短提示文本 610

15.3.4响应用户中途取消 611

15.3.5出错提示 613

15.3.6程序开始和结束 613

15.3.7清除方法Clear 615

15.3.8类模块的Initialize和Terminate事件过程 616

15.4工作助手类模块的应用实例 616

15.5开发指示进度窗体 618

15.5.1指示进度窗体的运行效果和调用 618

15.5.2在工作助手类模块中添加驱动窗体的代码 619

15.5.3开发frmWorkingAvi窗体 621

第16章 边界条约用户定——实现运行时控件的边框调整 629

16.1解决边框调整问题的基本思路 629

16.1.1通用模块的使用 629

16.1.2 Frame控件的作用 630

16.1.3控件大小位置的重新调整 631

16.1.4上下型和左右型风格 632

16.2开发边框调整的通用模块 633

16.2.1控件关联 633

16.2.2有关的数据定义 635

16.2.3重新安排控件大小和位置 642

16.2.4处理分隔线拖动事件 644

16.2.5类模块的Initialize和Terminate事件过程 648

16.3边框调整通用模块应用实例 648

第17章“泡泡”几时有自己编程瞅——自己编程实现气泡提示框 653

17.1制作气泡型窗体 653

17.1.1制作气泡型窗体的基本思路 653

17.1.2制作气泡型窗体实例 656

17.2气泡提示框的通用模块 658

17.2.1窗体的界面设计 659

17.2.2气泡样式和图标类型的枚举类型 659

17.2.3属性和常量定义 662

17.2.4显示气泡提示 664

17.2.5指向控件的气泡提示 676

17.2.6气泡提示的关闭 677

17.2.7窗体的加载和卸载 677

17.3气泡提示框程序实例 678

第18章乱“式”英雄——具有高级功能的表达式计算 680

18.1表达式计算的算法简介 680

18.2 clsCacuExp类模块的数据定义 682

18.2.1数据类型 682

18.2.2表达式“解析”与表达式元素 684

18.2.3表达式中的常量元素 686

18.2.4表达式中的变量元素 687

18.2.5运算符和函数的常量定义 690

18.2.6表达式字符串属性 696

18.2.7计算结果属性 697

18.2.8错误信息属性 698

18.3 clsCacuExp类模块的功能代码 699

18.3.1表达式解析 699

18.3.2表达式计算 713

18.4 clsCacuExp类模块的使用实例 725

索引 727

参考文献 734