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

Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助。 1:使用中文VC(VC++在中文平台下可以使用中文,但编译后那些按钮上的、对话框上的中文都成ASCII码了) 因为VC++在安装时是默认按单字节字符安装的,而中文字符是双字节编码,自然就不能正确显示了。 解决方法: 将VC++光盘上DEVSTUDIO\SHAREDIDE\BIN\IDE路径下的中文资源语言模块Appwzchs.dll拷贝至硬盘DevStudio\SharedIDE\BIN\IDE...
VC++ | 2009-03-09 09:22 | 阅读 1353 次 | 评论 0 条

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

Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助。 一,给控件设置焦点的两个方法 1.变量 m_edit1.SetFocus(); 2.控件ID GetDlgItem(IDC_EDIT1)->SetFocus(); 二,设置菜单某项的字体为粗体 CMenu* pMainMenu = AfxGetMainWnd()->GetMenu(); CMenu* pSubMenu = NULL; int i; for (...
VC++ | 2009-03-09 09:22 | 阅读 1252 次 | 评论 0 条

堆、栈及静态数据区详解

五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 全局/静态存储区,全局变量和静态变量...
C++ | 2009-03-09 09:21 | 阅读 2722 次 | 评论 0 条

VC文件扩展名解读大全

.APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。资源辅助文件。 .BMP:位图资源文件。.BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。用于浏览项目信息的,如果用source brower的话就必须有这个文件。可以在project options里去掉Generate Browse Info File,这样可以加快编译进度。.C:用C语言编写的源代码文件。.CLW:ClassWizard生成的用来存放类信息的文件。cl...
VC++ | 2009-03-09 09:21 | 阅读 3687 次 | 评论 0 条

浅谈内存泄漏

对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比较成熟,但是在c/c++领域的发展并不顺畅,虽然很早就有人思考在C++中也加入GC的支持。现实世界就是这样的,作为一个c/c++程序员,内存泄漏是你心中永远的痛。不过好在现在有许多工具能够帮助我们验证...
C++ | 2009-03-09 09:20 | 阅读 2018 次 | 评论 0 条

VC小知识总结(五)-------经典

(65)树形控件为何闪烁? 我从CTreeCtrl中继承了一个类,以缩进的格式显示节点,现在我碰上些问题,当树被重画两次之后(一次为缺省,另一次为对齐文本时)点选节点树就会闪烁. 1)试一下LockWindowUpdate()API函数。2)试一下加入TVS——HASBUTTONS标志, ModifyStyleEx(TVS_HASBUTTONS, 0);....//drawingModifyStyleEx(0, TVS_HASBUTTONS);如果它不再闪烁,那么在将其定义为自画属性,用PreCreateWindow()中加入CS——OWNDC。 (66)怎样才能关闭树形控件...
VC++ | 2009-03-09 09:19 | 阅读 2482 次 | 评论 0 条

VC小知识总结(四)-------经典

(46) CDC中的竖排文本? 在OnDraw成员函数中我想让文本竖直对齐,但CDC类似乎不支持该处理 方法一:如果你的竖直对齐是指旋转文本的话,下面的代码会对你有帮助:该代码检查一个Check box控制,查看文本是否需要旋转. // m_pcfYTitle is a CFont* to the selected font.// m_bTotateYTitle is a bool (==TRUE if rotated) void CPage1::OnRotateytitle(){LOGFONT lgf;m_pcfYTitle->GetLogFont(&lgf);m_bR...
VC++ | 2009-03-09 09:19 | 阅读 2173 次 | 评论 0 条

VC小知识总结(三)-------经典

(31)DLL中的模板成员函数? 在一个DLL中,我在自己创建的类中使用了模板成员函数来代替预处理宏.但出现以下错误: error C2664: 'double Data::extract(double &)' : cannot convert parameter 1 from 'class CArray' to 'double &'为什么在匹配模板定义时它要寻找一个DOUBLE参数? 我觉得你可能是在表达成员函数(内联)时出现了问题,请参照下面的示例: class AFX_EXT_CLASS Data : public CObject //...
VC++ | 2009-03-09 09:18 | 阅读 1673 次 | 评论 0 条

VC小知识总结(二)-------经典

(16)如何使用COleClientItem的IDispatch接口?我创建了一个如何使用COleClientItem对象,我想使用它的自动化方法.有什么方法来获得IDispatch的接口?我试过以CCmdTarget为基类的的GetIDispatch函数但却出错,我用过EnableAutomation和GetIDispatch,却什么也没得到. MSDN中有一篇关于这个的文章(TN039).如下的代码也可能是你所需要的: LPDISPATCH CMyClientItem::GetIDispatch(){ ASSERT_VALID(this); ASSERT(m_...
VC++ | 2009-03-09 09:18 | 阅读 1794 次 | 评论 0 条

VC小知识总结(一)-------经典

(1)当文档被修改时,如何在标题上加上标志'*'?重载CDocument类的虚函数virtual SetModifiedFlag: void CTest2Doc::SetModifiedFlag(BOOL bModified){ CString strTitle = GetTitle(); CString strDirtyFlag = " *"; // note space before the '*' // so we don't break Save As dialog if (!IsModified() &&...
VC++ | 2009-03-09 09:17 | 阅读 2866 次 | 评论 0 条

史上最牛比的一次演讲

 [演讲内容]   耶鲁的毕业生们,我很抱歉——如果你们不喜欢这样的开场。我想请你们为我做一件事。请你---好好看一看周围,看一看站在你左边的同学,看一看站在你右边的同学。   请你设想这样的情况:从现在起5年之后,10年之后,或30年之后,今天站在你左边的这个人会是一个失败者;右边的这个人,同样,也是个失败者。而你,站在中间的家伙,你以为会怎样?一样是失败者。失败的经历。失败的优等生。   说实话,今天我站在这里,并没有看到一千个毕业生的灿烂未来。我没有看到一千个行业的一千名卓越领导者,我只看到了一千个失败者。你们感到沮丧,这是可以理解的。为什么,我,埃里森,一个退学生,竟...
经典文章 | 2009-03-09 09:16 | 阅读 1510 次 | 评论 0 条

伪随机数、种子以及C中的随机函数

首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。 伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。怎样理解呢?产生的伪随机数有时遵守一定的规律,有时不遵守任何规律;伪随机数有一部分遵守一定的规律;另一部分不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这正是点到了事物的特性,即随机性,但是每种树的叶子都有近似的形状,这正是事物的共性,即规律性。从这个角度讲,你大概就...
C | 2009-03-09 09:10 | 阅读 1642 次 | 评论 0 条

一个25岁总裁给大学生的话

1.一定要有独立的人格、独立的思想。一个经过独立思考而坚持错误观点的人比一个不假思索而接受正确观点的人更值得肯定。不要成为灌输教育的牺牲品。 2.仕途,商界,学术。大致说来,每个人都注定要走上三条道路中的某一条。在进行职业生涯规划的时候,不妨以此作为思考的出发点。根据不同的职业生涯规划来塑造各自的核心竞争力。只有知道自己以后要做什么,才能知道自己应该学什么。3.专业无冷热,学校无高低。没有哪个用人单位会认为你代表了你的学校或者你的专业。千万不要因为你是名牌大学或者热门专业而沾沾自喜,也大可不必因为你的学校不好或者专业冷门而...
经典文章 | 2009-03-09 09:07 | 阅读 1303 次 | 评论 0 条

C++成员函数的重载、覆盖与隐藏

成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。 覆盖:派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。 函数Base::f(int)与Base::f(float)相互重载,而Base::g(void)被Derived::g(void)覆盖。#include <iostream.h>class Base{public:void f(int x){ cout << "Base::f(int) " ...
C++ | 2009-03-09 09:05 | 阅读 1623 次 | 评论 0 条

C++构造函数调用顺序

C++构造函数调用顺序: 1.虚基类的构造函数;虚基类构造函数如果有多个,虚基类则构造函数的调用顺序是某类在类派生表中出现的顺序而不是它们在成员初始化表中的顺序; 2、创建派生类的对象,基类的构造函数函数优先被调用(也优先于派生类里的成员类);基类构造函数如果有多个,基类则构造函数的调用顺序是某类在类派生表中出现的顺序而不是它们在成员初始化表中的顺序; 3、如果类里面有成员类,成员类的构造函数优先被调用;成员类对象构造函数如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序而不是它们出现在成员初始化表中的顺序; 4、派生类构造函数 作为一般规则派生类构造函数应该不能直接向一个...
C++ | 2009-03-09 09:05 | 阅读 1368 次 | 评论 0 条

学习C语言

学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。 一、要读就读好书,否则不如不读 所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。 大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)...
编程文章 | 2009-03-09 09:03 | 阅读 2234 次 | 评论 0 条

C++藏书阁

选择现在来推荐C++图书,看似蹊跷,实则是有原因的。我们的专栏去年初从Java图书开始,一年多的时间里始终对C++触及甚少。C++程序员出身的我,已经受到了不少好友和读者的质疑。去年是C++诞生20周年(从1985年第一个商业实现的发布算起),世界各地包括国内都举行了不少活动,当时本来已经动笔写了一个初稿,也想来 个献礼,但是稿成之后,看看又不满意,加之俗务缠身,就放了下来。这一拖,又是小半年。   终于促使我“重续前缘”的是今年以来发生的两件事。一是国内又一轮C++好书扎堆儿出版,增加了本文的必要性,否则,荣耀先生在2004年所写的《C++程序设计之四书五经》(上...
C++ | 2009-03-09 09:02 | 阅读 1054 次 | 评论 0 条

C++成长篇

秘笈 作者 初入江湖——惨不忍睹 C++程序设计教程- 或 -C++语言程序设计(第二版) 钱能郑莉 董渊   小有名气——将就着用 Thinking in C++ 2nd edition Bruce Eckel   名动一方——在大是大非的问题上立场坚定 Effective C++(第二版) 和 More Effective C++ Scott Meyers (Lostmouse、候捷 等 译)   天下闻名——正确的使用C++的每个特性 C++程序设计语言——特别版- 和 -ANSI/ISO C+...
C++ | 2009-03-09 09:00 | 阅读 907 次 | 评论 0 条

c++ volatile用法

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3) 多线程应用中被几个任务共享的变量回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到v...
C++ | 2009-03-09 08:59 | 阅读 1607 次 | 评论 0 条

C++关键字

关键字是预先保留的标识符,每个关键字都有特殊的含义。我们不能在程序中使用与关键字同名的标识符。以下是C++所保留的关键字 asm auto bad_cast bad_typeid bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum except explicit extern false finally float for frien...
C++ | 2009-03-09 08:58 | 阅读 1113 次 | 评论 0 条
浏览190831次