主题: VC的若干实用小技巧(二)
(该帖已被评为精华帖)      收藏
  • chuccccc 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:chuccccc
  • 专家等级:中级程序员
  • 专家分:2000
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:1124
  • 结帖率: 100%
  • 注册时间:2005-12-22 11:39:00
发表于 2006-02-18 11:07:00
楼主

 VC的若干实用小技巧(二)

VC的若干实用小技巧(二)
转载



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

  • backer 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:backer
  • 专家等级:初级程序员
  • 专家分:1000
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:548
  • 结帖率: 100%
  • 注册时间:2004-08-22 20:50:00
发表于 2006-02-18 21:37:00
第 1 楼

 

很喜欢这样的帖子,顶一下


  • chuccccc 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:chuccccc
  • 专家等级:中级程序员
  • 专家分:2000
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:1124
  • 结帖率: 100%
  • 注册时间:2005-12-22 11:39:00
发表于 2006-02-19 00:34:00
第 2 楼

 

谢谢


  • jfwang123 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:jfwang123
  • 专家等级:新手上路
  • 专家分:0
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:37
  • 结帖率: 100%
  • 注册时间:2006-11-13 21:57:00
发表于 2006-11-18 11:01:00
第 3 楼

 

又保存了一个,太好了!谢谢!

  • xiao_6 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:xiao_6
  • 专家等级:新手上路
  • 专家分:0
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:22
  • 结帖率: 100%
  • 注册时间:2006-11-12 07:28:00
发表于 2006-11-26 07:17:00
第 4 楼

 

好贴


  • xiaosheng 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:xiaosheng
  • 专家等级:新手上路
  • 专家分:0
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:27
  • 结帖率: 100%
  • 注册时间:2007-06-26 17:10:00
发表于 2007-07-10 16:03:00
第 5 楼

 

是好贴!

  • ILikeC++ 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:ILikeC++
  • 专家等级:新手上路
  • 专家分:0
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:72
  • 结帖率: 100%
  • 注册时间:2007-06-28 17:47:00
发表于 2007-07-23 17:10:00
第 6 楼

 


  • bit_lxq 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:bit_lxq
  • 专家等级:新手上路
  • 专家分:0
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:43
  • 结帖率: 100%
  • 注册时间:2006-09-01 13:04:00
发表于 2007-07-24 16:06:00
第 7 楼

 

第一个在那儿?


  • w_path 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:w_path
  • 专家等级:新手上路
  • 专家分:0
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:58
  • 结帖率: 100%
  • 注册时间:2007-04-04 15:19:00
发表于 2007-07-27 21:27:00
第 8 楼

 

很好!Up 

  • goodstudy 我现在不在线,你找我吗?
  • 显示默认头像
  • 昵称:goodstudy
  • 专家等级:新手上路
  • 专家分:0
  • 可用分等级:佃户
  • 精华:0
  • 帖子数:25
  • 结帖率: 100%
  • 注册时间:2007-10-22 12:21:00
发表于 2007-10-27 21:54:00
第 9 楼

 

使劲顶,!!!!11


快速回复主题
您还未登录,不能回复帖子
phome.asia   程序员之家论坛
程序员之家 版权所有 Copyright 2004-2009 All Rights Reserved©2009 京 ICP 备 05027197 号 网站地图 关于我们 联系我们