1. 主窗口内的每一个子窗口都是可以dock的,dock在边上的子窗口在右上角有两个按扭,一个是关闭,一个是图钉。当图钉按下时,子窗口就不会再自动缩回 到边上,而且可以通过拖动子窗口的标题栏把它拉出来。我建议将所有不需要的子窗口都关掉,再将dock到底部和左边的所有子窗体也关掉,需要的子窗体全部 放到右边,然后把图钉拔起来,要看的时候把鼠标移过去就可以看到了,滑动出来的时候不会挡住代码,给代码编辑留下最大的空间。
2. 工具条也具有和子窗口类似的dock属性,要关掉工具条,可以把它拖出来,然后关闭。工具条和菜单的每一项都可以设置,方法是在工具条或菜单条上单击右 键,然后在弹出菜单里点自定义,这时你可以通过在工具条和菜单条上拖动,很方便的完成自定义的部局。你还可以选中某一项后按右键,来设置这一项的详细属 性。我建议关掉所有的工具条,因为一般常用的命令都有快捷键,不常用的就用菜单吧,这样可以省出来地方给代码编辑。
3. 键盘的快捷键设置可以在工具菜单->选项->环境->键盘里设置。上面有一些预设的键盘映射方案,你可以选择其中一项,然后在下面加以修改后另存为自己的方案。我强烈推荐使用Visual C++6.0的键盘映射方案,很顺手哈!
4. 在工具菜单->选项->环境->字体和颜色里可以设置代码编辑中各类标识符的字体和颜色。在这里你可以把字体调大一点,因为默认的9号 字太小了,看不清楚。我的设置是11号幼圆。对于字体颜色的详细设置,你可以使用颜色后面的自定义,来选择你喜欢的颜色,我还是很喜欢整编代码五颜六色的 样子!
一、代码编辑部分
1. 如果一段代码的缩进很乱,空格、TAB一大堆杂乱无章,那么选中这一段代码,在编辑菜单->高级中按格式化选定内容。这一段代码就被自动整理好了。 如果一段代码中空格和TAB交错使用,但格式似乎是整齐的,你可以到编辑菜单->高级->查看空白,查看代码中的空格和TAB。
2. 在工具菜单->选项->文本编辑器->C/C++->常规中把启动单击URL定位清除掉,这一项在C/C++代码编辑中没什么 用,反而会引起一些误会。再把行号勾上,我认为这虽然占一些空间,但是非常方便。在文本编辑器->C/C++->制表符中把制表符大小和缩进 大小都调整为4,这样有助于编译整齐的代码。如果你打开了行号,建议在文本编辑器->常规中,把选定内容的边距关掉,因为这就有点多此一举了。
3. 在工具菜单->选项->项目->VC++目录中设置工程文件的路径。一般设置包含文件和库文件就可以了。
4. 在代码编译窗口的上面有两个下拉列表框,左边的是可见域,右边的是函数,你可以通过这两个下拉框在一个很大的源文件中实现准确的定位。用好这个功能可以极大的提高编程效率。
5. 大纲显示是一个非常好的功能,只是可能很多人都不习惯。可以在编辑->大纲显示->停止大纲显示来关掉它。如果想不在启动时就启用大纲显示,则可以在工具菜单->选项-> C/C++->格式设置中把打开文件时进入大纲模式去掉。
6. 选中一段代码后按tab可以增加它的缩进;按住Alt可以竖选一段代码;鼠标放在行号栏或代码左边距上(如果你启用了)会变成向反方向的指针,这时你可以 选中对应的一行;选中代码后可以拖动选中的代码到合适的位置;按住Ctrl再按左右方向键可以移动光标并跳过关键字;Ctrl+Home和Ctrl+ End分别是到达文件顶部和底部;接住Shift再按方向键可以选中光标略过的字符,可以和Ctrl一起使用;Ctrl+A可以选中全部代码;Ctrl+ =和Ctrl+-可以返回到你刚刚查看的代码的位置;可以利用括号匹配功能来帮助写完整的代码,括号匹配时会加粗显示,这一点可以在工具菜单->选 项->环境->字体和颜色里设置。
7. 查找和替换功能非常强大,可以选择使用通配符和正则表达式。由于篇幅关系,关于通配符和正则表达式的说明请参阅MSDN,我在此就不多说了。在文件中查找 或替换,可以方便的编辑查找范围。你可以使用预定的几个查找范围,包括整个解决方案、VC++包含目录等,你也可以点后面的按扭来编辑详细的查找范围。对 于文本文件的查找,VC++带的查找工具,要比Windows的文件查找那个效率高太多了。
8. 按下面的顺序包含头文件:
#define CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
然后在程序开始的时候写上:
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
这样在调式程序结束后,内存泄露就会转储到输出子窗口的调试模式中。
三、编译部分:
1. 如果一个很大的工程,需要包含大量的系统头文件,那么你可以把这些包含的头文件全部写到一个StdAfx.h的文件里,然后再建一个 StdAfx.cpp,里面就一句代码,#include “StdAfx.h”,接着在解决方案管理器->你的工程上单击右键,然后按属性->配置属性->C/C++->预编译头,把创 建/使用预编译头设为:创建预编译头,下面两向会自动填写,如果没有,那就填上StdAfx.h。然后把你的工程完全重新生成一编,再进入刚才的选项,把 创建/使用预编译头设为:设用预编译头。好了,你的工程现在的编译速度应该超极快了。
2. 如果你的程序需要引入特定的库,那么可以在需要引用的源文件里写上:#pragma comment( lib, “xxx.lib” ) 这样就不需要到配置属性->链接器->输入里去设置了,这样还可以提高你的代码的兼容性。
3. 如果你在写DLL,而且这个DLL是被另一个工程编译出来的EXE所使用的,但是这两个工程又不在同一个文件夹里,所以你只好每次都把新编译好的DLL复 制到EXE的目录下再调试,如果某次你忘了更新,这可能就会浪费你很多的时间和精力。其实你可以写一个BAT文件,用Dos命令copy,完成你需要的拷 贝任务,然后把这个BAT文件放到DLL的目录下,再进入配置属性->生成事件->生成后事件->命令行中填上你要执行的BAT文件 名,在编译结束后就会自动执行拷贝任务了。
4. 工具菜单->选项->环境->项目和解决方案中,可以把若生成完成时有错误,则显示任务列表窗口那一项勾上。这样在你编译结束,发现错误后,会自动弹出任务列表,然后你双击某一项任务,就会定位到出错的那一行代码上。
四. 资源部分
1. 编辑对话框时,选中一个控件,然后在属性子窗口中会列出它的所有的属性。按上面的闪电按钮,会列出它所有可用的事件,双击其中一个事件,就会跳转到相应的源文件中,这时你就可以为该控件的某一事件添加处理程序了。
2. 在使用MFC编程时,属性子窗口会显示这个类可用的重写函数和事件处理程序,双击就可以编写代码。如果发现属性子窗口和代码不对应,可以在类视图中选择你需要编辑的类,或在代码编辑中单击右键按同步类视图。
3. 一个图标文件其实是一个图标包,里面可以包含很多个大小、颜色均不一样的图标,在VC.net的图标编译器中也可以任意新建、删除、修改图标。在图像菜单中的新建图象类型、当前图标图像类型、删除图像类型可以很方便的完成此功能。
4. 菜单编辑时,在菜单项的Caption属性中输入-,该菜单项会自动变成分隔符。
五,调试部分
1. 在调试菜单->窗口子菜单中,你可以打开这些都很有用的调试辅助窗口。下面讲述的窗口都可以在这里打开。
2. 在代码编辑的最左边单击左键,会为这一行添加断点。右击这个断点可以修改这个断点的属性,比如设置这个经过这个断点多少回再停下,或着是一个条件判断语句为true时这个断点再停下等等。断点窗口可以对源文件中的断点进行更加详细的配置和管理。
3. 自动窗口和局部变量里你可查看到几乎所有当前你需要查看的变量的值,并且在这里你可以修改这个变量的值。
4. 寄存器窗口可以查看所有寄存器的状态。在这个窗口中右击,打开你需要查看的寄存器。
5. 调用堆栈,这个在出错时非常有用。比如内存访问出错,然后停到了delete源文件中的一行,这时你就可以通过堆栈来向上查找看是哪一个真正的出错源语句。
6. 命令窗口,在这里可以写VC++预定义命令,甚至可以编写部分C++代码。比如p = 5;这完全是可以的,具体可用的命令请参阅MSDN。
7. 监视窗口,在这里输入你需要查看的变量名称,它的值就会马上显示在后面。如果是一个对象,点前面的+号,它的成员就会列到下面。如果有一个数组int a[6],你可以输入:a,6,这样你就可以查看这个数组中所有元素的值了。还可以转换格式,比如token,x。更详细复杂的功能,具体请参阅 MSDN。
五. 关于VisualC++6.0模式键盘映射模式下的常用快捷键
常规文本编辑部分略
格式化选定内容:Ctrl+K,Ctrl+F
向前定位:Ctrl+=
向后定位:Ctrl+-
查找:Ctrl+F
在文件中查找:Ctrl+Shift+F
替换Ctrl+H:
在文件中替换:Ctrl+Shift+H
转换为大写:Ctrl+Shift+U
转换为小写:Ctrl+U
注释选定内容:Ctrl+K,Ctrl+C
取消注释:Ctrl+K,Ctrl+U
打开/关闭断点:F9
清除所有断点:Ctr+Shift+F9
全部编译:F7
单元编译:Ctrl+F7
单步跟踪:F10
进入函数:F11
运行到光标处:Ctrl+F10
跳出函数:Shift+F11
运行调试:F5
停止调试:Shift+F5
重新启动调试:Ctrl+Shift+F5
运行不调试:Ctrl+F5
打开/关闭书签:Ctrl+K,Ctrl+K
上一个书签:Ctrl+K,Ctrl+P
下一个书签:Ctrl+K,Ctrl+N
清除所有书签:Ctrl+K,Ctrl+L
打开属性窗口:Alt+Enter
上一篇文档:Ctrl+Tab
下一篇文档:Ctrl+Shift+Tab
打开项目:Ctrl+Shift+O
打开文件:Ctrl+O
保存:Ctrl+S
全部保存:Ctrl+Shift+S
新建文件:Ctrl+N
全屏显示:Shift+Alt+Enter
首先,我們先建立一個簡單的console程式,以供往後測試用。 請選擇 File/New 開啟New Item對話盒,在New次頁選擇Console Wizard,如下圖:
按下OK鈕以後,出現如下畫面:
請依照上圖在Use VCL與Console Application的check box上打勾,選完後按下OK鈕,Console Wizard會自動幫我們產生一個程式骨幹,如下圖:
接著請將此程式(Unit1.cpp)以及專案檔(Project1.bpr)一起存檔於一個獨立的新目錄之中,比方我們將他們存放在test目錄中,則第一次儲存後,整個目錄下只有幾檔案,如下圖:
額外一提的是,很多朋友會發現在每次使用BCB編譯完成之後,在專案所在的目錄下會多出很多檔案,通常不知道該刪掉哪一個才好。以我們這個剛開啟的專案來說,當我們按下Project/Make Project1之後,目錄下會產生如下圖內的檔案:
有 關原始碼備份檔案的部分,每當我們儲存檔案的時候的時候,只要該檔案原先已存在目錄下,則IDE自動會將原先的檔案改名成*.~*,然後將要儲存的檔案重 新寫入硬碟裡頭。比方說Unit1.cpp,如果再存檔,IDE就會把檔名改成Unit.~cpp,然後將最新的Unit1.cpp存回硬碟中。如果各位 覺得這個產生備份原始檔的動作有點煩,甚至覺得沒有必要,那麼請選擇Tools/Editor Options開啟下面的對話盒:
另 外,每個cpp檔在編譯過後都會產生一個obj檔,因此當程式越寫越大之後,產生的obj檔會越來越多,到時候備份時要一個個刪除就顯的有點麻煩。在此筆 者提供一個建議,就是讓編譯器將編譯過的obj檔統一放到一個目錄下面,到時候我們只要刪掉這個目錄下的所有檔案即可。為了做到這一點,請選擇 Project/Option開啟下面的對話盒:
最後一點要提的是,BCB 5.0內定是把編譯放在背景執行,所以每次我們按下Make或是Build的時候,除非編譯發生問題,否則編譯成功之後,編譯過程對話盒會自動關閉。為了要觀察編譯過程,請選擇Tools/Environment Options開啟如下的對話盒:
請將Background compilation的check box的勾勾拿掉,如此編譯的過程就如同BCB 5.0之前的版本一樣,每次編譯都會在螢幕中間出現編譯過程對話盒,如下所示:
大 家應該記得我們在做以上實驗的時候,都可以自己隨心所欲地刪除那些cache 檔,因此,個人認為1、2的做法比較不可能,而3、4是比較可行的方法。筆者自行用工具檢測每次編譯後registry是否有改變,結果發現 registry並沒有因此而改變;如果是使用編譯器內部的資料結構,那勢必只能針對每一個Project建構預先編譯資訊,可是後來筆者自己做了實驗後 發現,這些預先編譯的cache檔可以”跨Project”使用,也就是說不管是否存在同一個Project之中,這些cache檔是可以讓每個 Project共享,編譯器只關心預先編譯標記是否存在。然而當筆者自己使用UltraEdit開啟vcl50.csm以及vcl50.#??的時候,筆 者利用UltraEdit的搜尋功能去搜尋這兩個檔案裡面是否有類似 iostream 或是stdio 等字串之後,大致上可以推論出vcl50.csm比較類似的3的做法,而vcl50.#??比較類似4的做法,或許Borland的工程師兩種方法都有用 上吧! 由於欠缺更詳盡的資料,所以無法再做更詳盡的剖析,如果有讀者研究出結果,別忘了告訴大家喔!
這樣一來,以後我們在開發程式的時候,一開始便可以先不用把使用者自訂的標頭檔引入,一旦到了程式開發後期,我們只要使用 Project/Option裡的Directories/Conditionals次頁,在Conditionals的Edit Box裡面填上 USE_USERDEF就可以讓我們自訂的標頭檔都享受到pre-compiled headers技術的好處。同樣地,我們可以在此填入USE_VCLDB、USE_VCLEXT、USE_OLE、USE_ATL等定義,也可以讓VCL內部所有相關的標頭檔充分利用pre-compiled headers技術。如下圖:
Projec t/ Option 的 Compiler次頁:
