VC常用小技巧

来源:互联网 发布:openwrt 网络尖兵 编辑:程序博客网 时间:2024/04/30 15:10


2:有时,workspace中的classview显示混乱。其表现如下:
(1):添加的成员变量或函数不能显示;
(2):即使显示出来了变量或函数,双击后不能跳至正确的位置。
解决方法:
删除.ncb文件,再rebuild all.


3:如何干净的删除一个类?
1:先从workspace中的fileview中删除对应的.h和.cpp文件。
2.再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件。
3.再删除.clw文件。
打开项目,rebuild all。


4:初学者常有这样的疑惑:
直接望工程文件里加入一个cpp原文件再编译连接的话老是提示没有找到预编译头
解决方法:
#include "stdafx.h"


5:如何向项目中加入自己定义的类?
方法很多,介绍一个简便的:
选择insert/new class菜单
弹出对话框;
选择class type为generic;
输入类名。
当然,也可以自己决定该类的基类


6:如何在工作区(workspace)导入多个项目(project)?
在打开一个项目(*.dsp文件)后,在利用"project" 菜单下insert project into workspace 子菜单选择另一个项目文件(*.dsp文件),可插入另一个项目。
在classview 视图中,右键可以激活其中某个项目,工作区插入多个项目能方便不同项目间拷贝代码、资源等。


7: 在classview 视图中类太多如何整理?
我们可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了。


8:如何快速删除项目下debug 文件夹中临时文件?
在fileview视图中选中对应项目,右键clean即可。


11:怎样快速生成一个与现有项目除了项目名外完全相同的新项目?
利用file菜单下生成新项目中的custom appwizard ,选择 an existing project ,然后选择现有项目的项目文件名(*.dsp)finish,编译后就生成一个可以生成与现有项目相同但可以重新取名的项目的appwizard。你可以象用mfc appwizard一样用它。如果不想用了,可以在vc 安装目录下common/msdev98/template目录中删除该wizard中.awx和 .pdb文件。


12:如何在源文件中定位光标到对称的{ }和 #if, #endif ?
前者使用ctrl和 "} "键 ,后者使用ctrl和"k"键。


13:如何在vc中设置头文件和库文件?
除了vc缺省头文件和库文件外,如果经常要用到第三方的头文件和库文件可以在tools options 的directories中设置。如果只是本项目要用到,可以在project setting->link object/library modules中设置库文件。


14:如果让控制台应用程序支持mfc类库?
可以在控制台应用程序中include 来引入mfc库,但是控制台应用程序缺省是单线程的,mfc是多线程的,为解决该矛盾,在project setting->c/c++ 选项,选择code generation,在use run-time library 下拉框中选择debug multithread。


17:如何汉化只有可执行代码的.exe 文件?
在nt 下利用vc open file 以resources方式打开*.exe 文件,直接修改资源文件,然后保存即可。


18:我怎样才能建立一个等待光标?
调用BeginWaitCursor函数来启动等待光标,调用EndWaitCursor函数 来结束等待光标。要注意,二者都要调用App的成员函数,如下所示:
AfxGetApp()->BeginWaitCursor(); // 要做的事 AfxGetApp()->EndWaitCursor();


19:什么是COLORREF? 我该怎样用它?
COLORREF是一个32-bit整型数值,它代表了一种颜色。你可以使用RGB函数来初始化COLORREF。
例如: COLORREF color = RGB(0, 255, 0); RGB函数接收三个0-255数值,一个代表红色,一个代表绿色,一个代表蓝色。在上面的例子中,红色和蓝色值都为0,所以在该颜色中没有红色和蓝色。绿色为最大值255。所以该颜色为绿色。0,0,0为黑色,255,255,255为白色。


21:AppWizard所产生的STDAFX文件是干什么用的?
它主要是协助产生预编译头文件的。通常你是不需要修改它的。


22:在我的程序的某些部分,我可以调用 MessageBox 函数来建立一个信息对话框,例如在视类中。但是,在其它部分我却不能,如文档类中。为什么?我怎样才能在我的应用程序类中建立一个信息对话框?
MessageBox函数来自CWnd类,所以你只能在从CWnd继承的类(如CView)中调用它。但是,MFC也提供了AfxMessageBox函数,你可以在任何地方调用它。


23:我需要在我的程序中设置全局变量,以使文档中的所有类都能访问。我应该把它放到哪儿?
把该变量放到该应用程序类的头文件中的attribute处。然后,在程序的任何地方,你都可以用下面的方法来访问该变量:
CMyApp *m_App = (CMyApp *)AfxGetApp();
m_App->MyGlobalVariable = ...;


24:我听说MFC可以发现内存漏洞,我怎样使用该特性?
如果你在Debug菜单中的Go选项(不是Project菜单中的Execute选项)来运行你的应用程序,MFC应该在程序终止时报告内存漏洞。如果没有,那么试试运行MFC Tracer 工具程序(在VC++程序组中),并启动跟踪。然后返回应用程序。


25:我怎样才能在我的应用程序中循环浏览已经打开的文档?
使用CDocTemplate中未公开的GetFirstDocPosition()和GetNextDoc()函数。


26:我怎样才能在我的应用程序中循环浏览已经打开的视?
使用CDocument中未公开的GetFirstViewPosition()和GetNextView()函数。


28:我应该怎样防止MFC在窗口标题栏上添加文档名?
在PreCreateWindow函数中删除FWS_ADDTOTITLE标志的窗口样式:
cs.style &= ~FWS_ADDTOTITLE ;


29:我应该怎样防止MFC在窗口标题栏上把文档名预置成应用程序名?
在PreCreateWindow函数中删除FWS_PREFIXTITLE标志的窗口样式:
cs.style &= ~FWS_PREFIXTITLE;


33:我在菜单中添加了新的项。但是,当我选该项时,在状态栏上没有出现任何提示信息。为什么?
打开资源文件中的菜单模板。打开新菜单选项的属性对话框。在对话框的底部的Prompt编辑框中,你可以如下指定状态栏上的提示信息和工具栏上的提示信息 (如果你已经建立的工具栏按钮): Status bar string/nFlying tag 



摘录: http://my.opera.com/yjfuk/blog/2006/11/18/vc
原创粉丝点击