专家门诊 Visual C++开发答疑300问 pdf扫描版 附源码打包 PDF 免费下载

本书精选了300多个在Visual C++程序设计中经常遇到的问题和典型的功能需求,以专家解答的方式展现给读者。本书内容涵盖开发工具与调试、Visual C++ 6.0编程基础、对话框及控件的使用、一般窗口及界面设计、SDI和MDI窗口、消息系统钩子函数及DLL、磁盘路径与文件操作、数据库、网络与通信、图形图像及打印控制、操作系统、线程及进程控制、时间控制、数学算法、发布程序等Visual C++开发的各个方面,重点突出程序设计实用性。每个问答或者需求都根据技术难度不同加以标识,并给出在实际开发中的人气指数(经常涉及频繁程度)。

  本书是广大开发人员编程经验的积累,本书适合于已经初步掌握Visual C++编程概念、方法的读者阅读,可帮助读者迅速掌握实际应用中的开发技巧。

目录:

第1章 开发工具与调试 1
·如何快速地规范代码缩进格式 2
·如何在Release状态下进行调试 2
·Release版和Debug版有什么不同 3
·Assert和Vertify有什么区别 3
·如何修改开发环境的字体 3
·Workspace和Project之间是什么样的关系 4
·如何在非MFC程序中使用ClassWizard 4
·如何设置条件断点 4
·在编辑状态下发现成员变量或函数不能显示提示时如何打开提示功能 5
·如何将一个通过ClassWizard生成的类删除 5
·如何将在workspace中消失的类找出来 6
·如何清除所有的断点 6
·如何在ClassWizard中选择未列出的消息 6
·如何检测程序中的括号是否匹配 7
·如何查看一个宏(或变量、函数)的定义 7
·如何整理ClassView视图中大量的类 7
·如何添加Lib文件到当前工程 7
·#include FileName.h和#include “FileName.h”有什么区别 8
·如何在工作区(Workspace)导入多个项目(Project) 8
·如何快速删除项目下Debug 文件夹中临时文件 8
·如何快速生成一个与现有工程除了工程名外完全相同的新工程 9
·如何解决Visual C++ 6.0不正确连接问题 9
·引起LNK2001的常见错误都有哪些 9
·如何调试Windows外壳扩展程序(Shell Extension) 10
·如何调试一个没有原码的exe文件调用的 dll 11
·怎样设置栈的大小 11
·如何知道GetLastError()返回的错误代码的意义 12
·如何使用Visual C++ 6.0中的快捷键 12
·Visual C++ 6.0工程中的项目文件都表示什么 13

第2章 Visual C++ 6.0编程基础 15
·什么是匈牙利命名法 16
·Windows编程中的句柄是什么 16
·什么是回调函数以及如何使用它 18
·内存泄漏主要由哪些原因引起的 18
·如何发现内存泄漏 19
·C++的const类型是如何使用的 19
·指针和引用有什么区别 22
·如何动态分配二维数组 23
·纯虚函数是如何使用的 24
·堆和栈有什么区别 25
·两个类互为成员应该如何声明 26
·bool和BOOL有什么区别 26
·GlobalAlloc(),malloc()和new()有什么区别 26
·如何使用关键字volatile 27
·如何实现int与CString,char*与CString,float与CString之间的互相转化 27
·什么是UNICODE以及如何使用它 28
·C++中关键字typename有什么作用 29
·关键字__stdcall和__cdecl有什么区别 30

第3章 对话框及控件的使用 31
·如何创建和使用一个无模式对话框 32
·为什么使用CRichEditCtrl控件的对话框不能显示出来 33
·如何改变控件的字体 34
·如何限制编辑框的准许字符 35
·如何防止Edit框中的Password被非法获取 37
·如何设置ClistCtr控件为可以整栏选择并且有网格条纹的报表形式 38
·如何给CListCtrl控件增加列标题栏 39
·如何给CListCtrl填充数据 39
·如何实现CListCtrl中的排序问题 40
·如何给CTreeCtrl填充数据 42
·如何对CTreeCtrl中的节点文本进行编辑 43
·如何实现调色程序 43
·如何设定静态文本框的背景色和文本颜色 44
·如何响应CSliderCtrl控件的拖动消息以及得到当前位置 45
·如何使用CFileDialog对话框 46
·如何使用CColorDialog对话框 47
·如何使用CFontDialog对话框 47
·如何避免CRichEditCtrl中显示中文乱码的问题 48
·向列表框CListBox添加很多数据时如何防止闪烁 48
·当列表框ClistBox的项目宽度超过了其自身窗口宽度时如何显示提示条 49
·在给CComboBox的属性框中加入多项时如何换行 50
·如何在下拉框里显示上几次程序运行的输入信息 51
·如何改变对话框DoModal的返回值 54
·怎样弹出选择目录的对话框 55

第4章 一般窗口及界面设计 57
·如何设定窗口的背景色 58
·如何生成任意形状的窗体 58
·如何实现无标题窗口的拖动 59
·如何使窗体透明 60
·如何使窗体半透明 62
·如何保持窗口的大小不变 64
·如何使窗口始终位于所有窗口的最上面 64
·如何改变窗口的默认风格 65
·如何让窗体显示在中央 65
·如何使窗口不可见 66
·如何重置窗口的大小和位置 67
·如何将文本倾斜显示 67
·如何制作立体字体 68
·串太长如何在末尾显示省略号 69
·如何在对话框中加入工具条 70
·如何在基于文档视图的工程中加入启动画面 71
·如何在基于对话框的工程中使用Splash 71
·如何在对话框上动态创建视图 72
·如何将某一区域设为光标热区 73
·如何随时获得鼠标的窗口位置 74
·如何随意改变光标的形状 75
·如何控制鼠标的移动范围 76
·如何使窗体右上角的系统按钮无效 76
·如何改变窗口的图标 78
·屏幕保护程序的原理是什么 78
·应该如何制作屏幕保护程序 79
·如何在Visual C++ 6.0中用回车键切换输入焦点 82
·如何实现类似QQ程序的界面 82
·如何一步一步地弹出和关闭窗口 85
·如何弹出鼠标提示窗口 87
·如何制作类似Windows任务栏的窗口 89

第5章 SDI和MDI窗口 92
·文档、视图、框架窗口间的关系和消息传送规律是怎样的 93
·如何切分窗口 93
·如何固定视图间的分隔线 94
·如何动态改变切分窗口的大小 96
·如何实现切分窗口中视图的动态切换 96
·OnDraw和OnPaint之间有什么关系 97
·如何弹出右键菜单 98
·如何显示级联菜单 99
·如何给系统菜单添加一个菜单项 99
·如何将窗体顶端标题栏的右键菜单屏蔽掉 101
·如何动态增加或删除菜单 101
·如何使菜单项前带图标 102
·如何隐藏CScrollView中的Scroll Bar 104
·如何让工具条的按钮任意分组 104
·如何给工具条增加一个下拉按钮以及如何响应单击下拉按钮的消息 105
·如何实现工具栏上的下压式按钮 107
·如何在同一行上停靠两个工具条 108
·如何使能和禁止工具条的工具提示 110
·如何在工具栏中放CComboBox控件 110
·如何将系统时间在状态栏上显示 112
·如何使MDI启动时不生成子窗口 114
·如何让MDI窗口一启动时就最大化或者最小化 114
·如何改变窗口框架的颜色 115
·怎样得到主框架窗口指针 116
·如何实现全屏显示 116
·当文档被修改时,如何在标题上加上标志“*” 118
·怎样判断获得的视图指针是哪一个类 118
·如何取得MDI应用程序中每个视图的指针 119

第6章 消息系统、钩子函数及DLL 120
·如何自定义消息 121
·应用程序传送的消息有哪些以及有什么区别 121
·如何将几个菜单项的消息处理函数放入一个函数中 122
·消息WM_NOTIFY是如何使用的 123
·是不是只要是CWnd对象就一定有消息循环 124
·在对话框中为什么不响应按下向下箭头键(VK_DOWN)和向右箭头键(VK_RIGHT)的消息 124
·Visualc C++ 6.0可以编写哪几种dll 125
·Visualc C++ 6.0如何编写Non-MFC Dlls 125
·Visualc C++ 6.0如何编写Regular Dlls 126
·Visualc C++ 6.0如何编写Extension Dlls 127
·如何调用DLL 128
·为了定位DLL,Windows搜索目录的顺序是怎样的 129
·怎样从MFC扩展动态链结库(DLL)中显示一个对话框 129
·Win32中全局钩子的运行机制是怎样的 130
·Visual C++ 6.0中全局共享数据是如何实现的 131
·如何获知鼠标移开某个窗口 131
·如何记录键盘的所有按键信息 134
·如何用按钮模拟鼠标的点击 135
·如何用按钮模拟键盘的输入 136
·如何制作软键盘的应用程序 137
·如何知道自己的工程中调用哪几个DLL文件 151

第7章 磁盘路径与文件操作 152
·如何获得系统的所有磁盘驱动器 153
·怎样获得磁盘驱动器的序列号 153
·如何判定驱动器的文件系统类型 155
·如何获得磁盘空间信息 156
·如何判定磁盘是光驱还是软驱 157
·如何确定应用程序的路径 160
·应该在哪儿创建临时文件 160
·如何对INI文件进行读写 161
·如何遍历目录下的每一个文件 163
·如何将内容不为空的目录删除 164
·如何在特定目录下查找某个文件 165
·如何在txt文件中逐行读写数据 165
·如何获得文件的属性 167
·如何拷贝文件 168
·如何删除文件 168
·如何移动文件 169
·如何读写大型的二进制文件 169
·如何快速创建一个大文件 170
·如何在Visual C++ 6.0中使用fopen()函数来读写文件 172
·如何将路径转换为长路径名 172
·如何用Visual C++ 6.0编写文件分割工具 174

第8章 数据库 178
·ODBC访问数据库的原理是什么 179
·一致的数据访问技术ADO与OLE DB的原理以及它们的关系是怎样的 180
·如何在程序中动态得到字段的数据类型 183
·如何手动注册数据源 184
·如何在程序中实现数据源的注册 185
·在Visual C++ 6.0中如何利用UDL文件来建立ADO连接 187
·如何通过ADO接口连接数据库 188
·如何通过ADO的记录集获得每条记录的信息 189
·如何通过ADO的记录集修改记录信息 191
·如何用SQL语句按时间检索 191
·如何用SQL语句按字符串检索 193
·如何在SQL语句中将多个字符串作为检索条件 194
·如何执行嵌套的SQL语句 196
·如何访问存有图像字段的数据库 199
·如何在Visual C++ 6.0中建立自定义数据库类 201
·ODBC数据库编程中DDX 和RFX有什么区别 203
·如何用Visual C++ 6.0开发基于Oracle数据库的应用程序 204
·如何直接通过ODBC读、写Excel表格文件 206
·在Visual C++ 6.0中如何访问MySQL数据库 208

第9章 网络与通信 212
·什么是RFC 213
·如何获取网卡的地址 213
·如何获得IP地址和主机名 215
·如何对某些端口进行扫描 216
·如何实现连续多次的Ping命令 218
·如何像OutLook一样收发电子邮件 223
·如何连接FTP服务器 224
·如何获得FTP服务器的文件列表 225
·如何下载FTP服务器上的文件 227
·如何给FTP服务器上传文件 228
·什么是Windows Sockets规范 229
·什么是套接口 230
·TCP socket和UDP socket的区别是怎样的 230
·如何用有连接的方式实现聊天室 231
·如何用无连接的方式实现系统广播 236
·如何实现Proxy服务器 238
·如何下载网页 244
·如何在应用程序中映射网络驱动器 246
·如何实现电话拨号上网 247
·如何删除Internet临时文件 248
·如何列出系统打开的所有IE窗口的标题 250
·如何设置某个已经打开的IE窗口的标题 252
·如何清空IE的历史记录 253
·如何实现IE中的添加收藏夹的功能 254

第10章 图形图像及打印控制 255
·BeginPaint和GetDC获得的DC有什么区别 256
·如何获取屏幕上某点的颜色 256
·位图文件的结构是怎样的 257
·如何通过位图文件直接得到位图的大小 258
·如何通过位图文件显示位图 259
·如何将DIB位图写入位图文件 261
·BitBlt和StretchBlt函数有什么区别 262
·什么是掩码位图以及如何创建 263
·如何利用掩码位图制作透明图片 263
·如何绘制半透明位图 265
·如何缩放图片 266
·如何对图形进行局部放大 268
·如何将转换DIB位图为DDB位图 271
·如何将转换DDB位图为DIB位图 273
·如何截取屏幕 275
·如何任意裁剪图片 280
·如何用特定色填充某一区域 281
·如何复制位图到剪贴板 283
·物理坐标和逻辑坐标有什么区别,它们是如何转换的 284
·什么是COLORREF 284
·如何画一个1/4圆 285
·如何画箭头 285
·如何避免屏幕闪烁 286
·如何产生复杂线条 287
·如何显示JPG和GIF图像 288
·怎样定制通用打印对话框CPrintDialog来实现打印功能 290
·如何简易实现所见即所得的打印 291
·如何确定当前打印机的页面大小和方向 292
·如何确定打印队列的状态 294

第11章 操作系统 296
·如何获得Windows的版本号 297
·如何得到当前Windows是不是安全模式 299
·如何查询注册表中的键 299
·如何修改注册表中的键 301
·如何在注册表中增加键 302
·如何删除注册表中的键 303
·如何对屏幕分辨率进行控制 303
·如何获得系统运行的所有进程 305
·如何在任务列表中隐藏应用程序 307
·如何获取本机的硬件配置 308
·如何用代码实现重启和关闭计算机 310
·如何罗列出系统中已经安装的所有可用字体 310
·Windows系统关闭的时候都发生了什么消息 312
·如何得到当前Windows用户 313
·如何格式化磁盘 316
·如何用代码增加快捷键 318
·如何编写需要密码验证的应用程序 319
·如何调用帮助文件(*.chm) 321
·如何修改Windows的右键菜单 321
·如何在程序中改变Windows的桌面壁纸 322
·Windows 9x下如何直接访问物理内存 323
·如何获取快捷方式(.lnk)的目标和参数 326
·Windows NT/2000系统中如何获取系统的启动时间 327

第12章 线程及进程控制 329
·进程和线程有什么关系 330
·如何创建一个线程 330
·如何终止一个线程 331
·如何设定线程的相对优先级 331
·如何挂起和恢复线程 332
·如何用通过剪贴板在进程间交换数据 332
·如何通过内存映像文件在进程间交换数据 334
·如何通过消息实现进程间的通信 336
·如何获取应用程序的实例句柄 338
·如何获得应用程序主窗口的指针 338
·如何获得其他应用程序的图标 338
·怎样启动其他的应用程序 339
·如何关闭其他已经打开的程序 341
·如何用默认浏览器打开某个url的网页 342
·如何创建向导程序 343
·如何编写系统托盘程序 345
·如何让应用程序在系统中只能存在一个运行的实例 347

第13章 时间控制 349
·如何计算时间差 350
·程序中如何嵌入日历 350
·如何获得毫秒级的系统时间 351
·如何让定时器精确到毫秒 351
·如何对当前的系统时间进行操作 353
·如何获得和修改目录的日期和时间 354

第14章 数学算法 357
·中文和英文字符所占的字节数是一样的吗 358
·如何统计一段中英文混合字符的字符数 358
·排序法都有哪些,其算法都是怎样的 359
·如何将十进制字符串、十六进制字符串和二进制字符串互相转化 360
·如何随机选号 363

第15章 发布程序 367
·如何给软件加密和解密 368
·如何使程序在开机时就自动运行 370
·如何创建快捷方式 370
·如何删除快捷方式 373
·如何在程序中用代码注册和卸载ocx控件 374

截图:


发表回复