介绍 VC6.0 小问题和小技巧 1. 检测程序中的括号是否匹配 把光标移动到需要检测的括号 ( 如大括号 {} 、方括号 [] 、圆括号 () 和尖括号 ) 前面,键入快捷键“ Ctrl] ”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一
介绍 VC6.0 小问题和小技巧
1. 检测程序中的括号是否匹配
把光标移动到需要检测的括号 ( 如大括号 {} 、方括号 [] 、圆括号 () 和尖括号 ) 前面,键入快捷键“ Ctrl+] ”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。
2. 查看一个宏 ( 或变量、函数 ) 的宏定义
把光标移动到你想知道的一个宏上,就比如说最常见的 DECLARE_MAP_MESSAGE 上按一下 F12( 或右键菜单中的 Go To Defition Of … ), 如果没有建立 Browse files ,会出现提示对话框,确定,然后就会跳到定义那些东西的地方。相当可喜的是,它也可以看到 Microsoft 定义的系统宏,非常 good.
3. 格式化整理一段乱七八糟的源代码 , 使界面整洁美观
选中那段源代码,按 ATL+F8 。
4. 在编辑状态下发现成员变量或函数不能显示
有时, workspace 中的 classview 显示混乱。其表现如下:
(1): 添加的成员变量或函数不能显示;
(2): 即使显示出来了变量或函数,双击后不能跳至正确的位置。
删除该项目扩展名为 . ncb 文件,再重新打开该项目或者直接 rebuild all.
5. 如何整理 ClassView 视图中大量的类
可以在 classview 视图中右键新建文件夹 (new folder) ,再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了 .
6. 定位预处理指定
在源文件中定位光标到对称的 #if, # endif , 使用 Ctrl+K .
9. 如何在 Studio 使用汇编调试
在 WorkBench 的 Debugger 状态下按 CTRL+F7.
10. 怎样处理 ClassZiard 找不到的系统消息
如果要在 ClassWizard 中处理 WM_NCHITTEST 等系统消息,请在 ClassWizard 中 Class Info 页中将 Message filter 改为 Window 就有了 .
11. 如何干净的删除一个类
先从 Workspace 中的 FileView 中删除对应的 .h 和 . cpp 文件 , 再关闭项目,从实际的文件夹中删除对应的 .h 和 . cpp 文件与 . clw 文件。灾删除 . clw 文件。打开项目, rebuild all 。
12. 在 Studio 中快速切换两个文件
有时,我们需要在最近使用的两个文件中快速切换,换 Ctrl+F6 。 Ctrl+Tab 这在两个文件 不相今的 时候就有用的 .
13. 取得源程序预处理后的结果:
在 Studio 里,可以在 ->PROJECT-> SETTINGS->C/C++ ->Project Options 中,在最后加上 /P /EP 这两个编译开关即可做到 " 只进行预处理 ". 就可以了。编译以后就可以在源程序目录中发现“文件名 .I ”的文本文件。这就是预处理后的结果。 ( 注意注:区分大小定,请用大定 /P)
14. 在 Debug 模式中查看 WINAPI 调用后的返回值:
很简单,且实用:在 watch 中加入 @ hr,err 。在 CSDN 的文档中心有一篇讲得更细,请参考。
15. 产生指定源程序文件的汇编代码:
从 IDE 菜单的 Project->Setting 打开项目设置,按如下文件做:
1> 先在左边选择指定文件,可以多选。
2> 在右边的 C++ 属性页中,在 category 中选择 List Files, 接着在下面的 List Files Type 中选择 Assembly and source code( 或选择其它 ) ,最后在 List File Name 中输入在个 C/C++ 源文件产生的相应的汇编代码的文件。
3> 编译整个工程。
16. 手工编译 纯资源 成 dll :
Rc.exe /v
data.rc
Cvtres.exe /machine:ix86
data.res
Link /SUBSYSTEM:WINDOWS /DLL /NOENTRY
data.res ; 编译成 DLL 文件
这种方式创建的 DLL 是最小的,比起你用 Win 32 Dynamic Libray 等产生的更小。
17. 怎样快速生成一个与现有项目除了项目名 外完全 相同的新项目 ?
利用 File 菜单下生成新项目中的 Custom AppWizard ,选择 An existing Project , 然后选择现有项目的项目文件名 (*. dsp )Finish, 编译后就生成一个可以生成与现有项目相同但可以重新取名的项目的 AppWizard 。你可以 象 用 MFC AppWizard 一样用它。如果不想用了,可以在 VC 安装目录下 Common/MSDev98/Template 目录中删除该 Wizard 中 . awx 和 . pdb 文件。
18. 如果想把整个项目拷贝到软盘,那些文件可以删掉 ?
除了项目文件夹中 debug 文件夹可以删除外, . ncb,.clw,.opt 等文件也可以删除,这些文件 Rebuilt all 后可以重新生成。
附: VC 项目文件说明
. dsp 项目参数配置文件,这个文件太重要,重点保护对象。 .
. dsw 工作区文件,重要性一般,因为它信息 不 我,容易恢复。
以下文件在项目中是可丢弃的,有些文件删除后, VC 会自动生成的。
. clw ClassWizard 信息文件 , 实际上是 INI 文件的格式 , 有兴趣可以研究一下 . 有时候 ClassWizard 出问题 , 手工修改 CLW 文件可以解决 . 如果此文件不存在的话 , 每次用 ClassWizard 的时候绘提示你是否重建 .
. ncb 无编译浏览文件 (no compile browser) 。当自动完成功能出问题时可以 删除此 文件。 build 后会自动生成。
.opt 工程关于开发环境的参数文件。如工具条位置等信息 ;( 可丢弃 )
. aps ( AppStudio File), 资源辅助文件 , 二进制格式 , 一般不用去管他 .
. plg 是编译信息文件 , 编译时的 error 和 warning 信息文件 ( 实际上是一个 html 文件 ), 一般用处不大 . 在 Tools->Options 里面有个选项可以控制这个文件的生成 .
. hpj (Help Project) 是生成帮助文件的工程 , 用 microsfot Help Compiler 可以处理 .
. mdp (Microsoft DevStudio Project) 是旧版本的项目文件 , 如果要打开此文件的话 , 会提示你是否转换成新的 DSP 格式 .
. bsc 是用于浏览项目信息的 , 如果用 Source Brower 的话就必须有这个文件 . 如果不用这个功能的话 , 可以在 Project Options 里面去掉 Generate Browse Info File, 可以加快编译速度 .
.map 是执行文件的映像信息纪录文件 , 除非对系统底层非常熟悉 , 这个文件一般用不着 .
. pch (Pre-Compiled File) 是预编译文件 , 可以加快编译速度 , 但是文件非常大 .
. pdb (Program Database) 记录了程序有关的一些数据和调试信息 , 在调试的时候可能有用 .
.exp 只有在编译 DLL 的时候才会生成 , 记录了 DLL 文件中的一些信息 . 一般也没什么用 .
19. 使用 vc 开发项目时,常会遇到这种情况:
即明明只改动了一个文件,却要把整个项目全部重新编译连接一次。刚刚连接好, 一 运行,又提示重新编译连接一次,非常讨厌。这是因为出现了未来文件的缘故。找出对应文件夹下的 debug 目录,将未来文件全部 delete,
再 rebuild all 一次。 ( 未来文件即其创建和修改时间都比系统时间靠后)
20. 初学者常有这样的疑惑:
直接 望工程 文件里加入一个 CPP 原文件再编译连接的话老是提示没有找到 预编译头
#include " stdafx.h "
21. 如何快速删除项目下 Debug 文件夹中临时文件 ?
在 FileView 视图中选中对应项目,右键 Clean 即可。
22. 打开一个源文件较大的项目编辑操作非常慢,怎么办 ?
不要打开项目文件 (*. dsp 文件 ) ,直接打开要编辑的单个源文件( *.h 或 *. cpp )进行编辑,要快得多。
23. 如何让控制台应用程序支持 MFC 类库?
可以在控制台应用程序中 include 来引入 MFC 库,但是控制台应用程序缺省是单线程的, MFC 是多线程的,为解决该矛盾,在
Project Setting->C/C++ 选项,选择 Code Generation, 在 Use Run-Time Library
下拉框中选择 Debug Multithread 。
24. 如何为一个 MFC 应用程序添加 ODBC 功能?
( 1 )在文件 Stdafx.h 文件末尾添加下面一行:
#include // MFC ODBC database classes
( 2 )在文本模式下编辑 RC 文件(利用 File->Open As text
方式)
在下面的程序行(共有两处)
#include " l.chs/afxprint.rc " // printing/print preview resources
添加下一行:
#include " l.chs/afxdb.rc " // Database resources
25. 数据库表修改后,如何快速更新一个绑定到表的 CrecordSet 记录集?
利用 ClassWizard
中 Member Variables UpdateColoumns 和 Bind All 。
26. 如何汉化只有可执行代码的 .exe 文件?
在 NT 下利用 VC Open File
以 Resources 方式打开 *.exe 文件,直接修改资源文件,然后保存即可。