visual c++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助。
1:我怎样才能建立一个等待光标
调用beginwaitcursor函数来启动等待光标,调用endwaitcursor函数 来结束等待光标。要注意,二者都要调用app的成员函数,如下所示:
afxgetapp()->beginwaitcursor(); // 要做的事 afxgetapp()->endwaitcursor();
2:什么是colorref 我该怎样用它
colorref是一个32-bit整型数值,它代表了一种颜色。你可以使用rgb函数来初始化colorref。
例如: colorref color = rgb(0, 255, 0); rgb函数接收三个0-255数值,一个代表红色,一个代表绿色,一个代表蓝色。在上面的例子中,红色和蓝色值都为0,所以在该颜色中没有红色和蓝色。绿色为最大值255。所以该颜色为绿色。0,0,0为黑色,255,255,255为白色。=版权所有 软件 下载 学院 版权所有==版权所有 软件 下载 学院 版权所有=
3:我在我的程序中是了cdwordarray。我向它添加了约10,000个整数,这使得它变得非常非常慢。
cdwordarray是很好用的,只是因为你没有指定数组的最大尺寸。
因此,当你添加新元素时,该类会从堆中重新分配空间。不幸的是,该类会在每次插入新元素时都为数组重新分配空间。如果你向它添加了很多新元素,所有这些分配和复制数组的操作会就会使它变慢。
解决该问题的方法是,你可以使用setsize 函数的第二个参数来改变这种重新分配的频率。例如,如果你把该参数设置为500 ,则每次数组空间超出时它才重新分配并添加500个新空间,而不是1个。这样一来 ,你就可以不用重新分配而添加了另外499个元素空间,这也会大大提高程序的运行速度。
4:appwizard所产生的stdafx文件是干什么用的
它主要是协助产生预编译头文件的。通常你是不需要修改它的。
5:在我的程序的某些部分,我可以调用 messagebox 函数来建立一个信息对话框,例如在视类中。但是,在其它部分我却不能,如文档类中。为什么?我怎样才能在我的应用程序类中建立一个信息对话框
messagebox函数来自cwnd类,所以你只能在从cwnd继承的类(如cview)中调用它。但是,mfc也提供了afxmessagebox函数,你可以在任何地方调用它。
6:我需要在我的程序中设置全局变量,以使文档中的所有类都能访问。我应该把它放到哪儿
把该变量放到该应用程序类的头文件中的attribute处。然后,在程序的任何地方,你都可以用下面的方法来访问该变量:
cmyapp *m_app = (cmyapp *)afxgetapp();
m_app->myglobalvariable = ...;
7:我听说mfc可以发现内存漏洞,我怎样使用该特性
如果你在debug菜单中的go选项(不是project菜单中的execute选项)来运行你的应用程序,mfc应该在程序终止时报告内存漏洞。如果没有,那么试试运行mfc tracer 工具程序(在vc++程序组中),并启动跟踪。然后返回应用程序。
8:我怎样才能在我的应用程序中循环浏览已经打开的文档
使用cdoctemplate中未公开的getfirstdocposition()和getnextdoc()函数。
9:我怎样才能在我的应用程序中循环浏览已经打开的视
使用cdocument中未公开的getfirstviewposition()和getnextview()函数。
10:虚拟函数precreatewindow是干什么用的
precreatewindow允许你在调用createwindow之前来改变窗口属性。
11:我应该怎样防止mfc在窗口标题栏上添加文档名
在precreatewindow函数中删除fws_addtotitle标志的窗口样式:
cs.style &= ~fws_addtotitle ;
12:我应该怎样防止mfc在窗口标题栏上把文档名预置成应用程序名
在precreatewindow函数中删除fws_prefixtitle标志的窗口样式:
cs.style &= ~fws_prefixtitle;
13:我有一无模式对话框。我怎样才能在窗口退出时删除cdialog对象
把“delete this”加到postncdestroy中。这主要用在需要自动删除对象的场合。
14:为什么把“delete this”放在postncdestroy中而不是onncdestroy
onncdestroy只被已建立的窗口调用。如果建立窗口失败(如precreatewindow), 则没有窗口处来发送wm_ncdestroy消息。postncdestroy是在对象窗口被完全删除, 在onncdestroy后,甚至在窗口建立失败之后调用的。
15:file菜单中的mru列表是从哪儿来的?列表中的名字放在哪儿了?我怎样才能改变列表中项目的最大值?
在应用程序类的initinstance函数中对loadstdprofilesettings的调用中。该调用接受一个参数(在缺省情况下如果没有传递值则为4)。mru文件名是从ini文件中调用的。如果你有带有id_file_mru_file1的id的菜单选项,它会为调入的mru列表所替换。如果你改变传递给loadstdprofilesettings的数值(最大为16),则你就改变了所装如文件名的最大值。 =版权所有 软件 下载 学院 版权所有=
16:我在菜单中添加了新的项。但是,当我选该项时,在状态栏上没有出现任何提示信息。为什么
打开资源文件中的菜单模板。打开新菜单选项的属性对话框。在对话框的底部的prompt编辑框中,你可以如下指定状态栏上的提示信息和工具栏上的提示信息 (如果你已经建立的工具栏按钮): status bar string\nflying tag
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器