VC的若干实用小技巧如何干净的删除一个类文档格式.docx
《VC的若干实用小技巧如何干净的删除一个类文档格式.docx》由会员分享,可在线阅读,更多相关《VC的若干实用小技巧如何干净的删除一个类文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
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
视图中右键新建文件夹(new
folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了。
8:
如何快速删除项目下debug
文件夹中临时文件?
在fileview视图中选中对应项目,右键clean即可。
9:
打开一个源文件较大的项目编辑操作非常慢,怎么办?
不要打开项目文件(*.dsp文件),直接打开要编辑的单个源文件(*.h或*.cpp)进行编辑,要快得多。
10:
如果想把整个项目拷贝到软盘,那些文件可以删掉?
除了项目文件夹中debug文件夹可以删除外,.ncb,.clw,.opt
等文件也可以删除,这些文件rebuilt
all后可以重新生成。
11:
怎样快速生成一个与现有项目除了项目名外完全相同的新项目?
利用file菜单下生成新项目中的custom
appwizard
,选择
an
existing
然后选择现有项目的项目文件名(*.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
c/c++
选项,选择code
generation,在use
run-time
library
下拉框中选择debug
multithread。
15:
如何为一个mfc应用程序添加odbc功能?
(1)在文件stdafx.h文件末尾添加下面一行:
//
mfc
odbc
database
classes
(2)在文本模式下编辑rc文件(利用file->
open
as
text
方式)
在下面的程序行(共有两处)
l.chs\afxprint.rc"
printing/print
preview
resources
添加下一行:
l.chs\afxdb.rc"
16:
数据库表修改后,如何快速更新一个绑定到表的crecordset记录集?
利用classwizard
中
member
variables标签下选中记录集类后,利用updatecoloumns和bind
17:
如何汉化只有可执行代码的.exe
文件?
在nt
下利用vc
file
以resources方式打开*.exe
文件,直接修改资源文件,然后保存即可。
18:
我怎样才能建立一个等待光标?
调用BeginWaitCursor函数来启动等待光标,调用EndWaitCursor函数
来结束等待光标。
要注意,二者都要调用App的成员函数,如下所示:
AfxGetApp()->
BeginWaitCursor();
要做的事
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为白色。
20:
我在我的程序中是了CDWordArray。
我向它添加了约10,000个整数,这使得它变得非常非常慢。
CDWordArray是很好用的,只是因为你没有指定数组的最大尺寸。
因此,当你添加新元素时,该类会从堆中重新分配空间。
不幸的是,该类会在每次插入新元素时都为数组重新分配空间。
如果你向它添加了很多新元素,所有这些分配和复制数组的操作会就会使它变慢。
解决该问题的方法是,你可以使用SetSize
函数的第二个参数来改变这种重新分配的频率。
例如,如果你把该参数设置为500
,则每次数组空间超出时它才重新分配并添加500个新空间,而不是1个。
这样一来
,你就可以不用重新分配而添加了另外499个元素空间,这也会大大提高程序的运行速度。
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()函数。
27:
虚拟函数PreCreateWindow是干什么用的?
PreCreateWindow允许你在调用CreateWindow之前来改变窗口属性。
28:
我应该怎样防止MFC在窗口标题栏上添加文档名?
在PreCreateWindow函数中删除FWS_ADDTOTITLE标志的窗口样式:
cs.style
&
~FWS_ADDTOTITLE
;
29:
我应该怎样防止MFC在窗口标题栏上把文档名预置成应用程序名?
在PreCreateWindow函数中删除FWS_PREFIXTITLE标志的窗口样式:
~FWS_PREFIXTITLE;
30:
我有一无模式对话框。
我怎样才能在窗口退出时删除CDialog对象?
把“delete
this”加到PostNcDestroy中。
这主要用在需要自动删除对象的场合。
31:
为什么把“delete
this”放在PostNcDestroy中而不是OnNcDestroy?
OnNcDestroy只被已建立的窗口调用。
如果建立窗口失败(如PreCreateWindow),
则没有窗口处来发送WM_NCDESTROY消息。
PostNcDestroy是在对象窗口被完全删除,
在OnNcDestroy后,甚至在窗口建立失败之后调用的。
32:
File菜单中的MRU列表是从哪儿来的?
列表中的名字放在哪儿了?
我怎样才能改变列表中项目的最大值?
在应用程序类的InitInstance函数中对LoadStdProfileSettings的调用中。
该调用接受一个参数(在缺省情况下如果没有传递值则为4)。
MRU文件名是从INI文件中调用的。
如果你有带有ID_FILE_MRU_FILE1的ID的菜单选项,它会为调入的MRU列表所替换。
如果你改变传递