当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 追根究底,MFC六大关键技术之剖析(第二部分)小李先生二、运行时类型识别(RTTI)运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC++编译器里面选用“使能RTTI”,然后载入...
 

 

 ·用visual c++打造ie浏览器(3)     »显示摘要«
    摘要:二、实现收藏菜单   一般ie的用户都有个习惯,那就是将自己喜欢的网址保存起来,以方便今后快速的登陆,为了使我们的浏览器能够显示ie收藏过的网址,程序中设置了一个"favorites"菜单,通过regopenkey()、regqueryvalueex()等函数操作windows的注册表中的hkey_current_user\\software\\microsoft\\windows\\curr......
    摘要:一、非法获取password的原理: edit控件是windows的一个标准控件,当把其password属性设为true时,就会将输入的内容屏蔽为星号,从而达到保护的目的。虽然我们看来都是星号,但程序中的edit控件实际仍是用户输入的密码,应用程序可以获取该控件中的密码,其他应用程序也可以通过向其发送wm_gettext或em_getline消息来获取edit控件中的内容。黑客程序正是利用edit......


追根究底,MFC六大关键技术之剖析(第二部分)

追根究底,mfc六大关键技术之剖析(第二部分)

二.运行时类型识别(rtti) 【程序编程相关:编程建立IIS站点和虚拟目录(2)(实现

小李先生 【推荐阅读: WMI使用说明(翻译)

if (typeid (classname)== typeid(*objectname)){ 【扩展信息:编程建立IIS站点和虚拟目录(1)(头文

运行时类型识别(rtti)即是程序执行过程中知道某个对象属于某个类,我们平时用c++编程接触的rtti一般是编译器的rtti,即是在新版本的vc++编译器里面选用“使能rtti”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在c++编程中的sizeof()运算子类似的地方(包含一个头文件,然后就有一个熟悉好用的函数).typdid()关键的地方是可以接受两个类型的参数:一个是类名称,一个是对象指针.所以我们判别一个对象是否属于某个类就可以象下面那样:

((classname*)objectname)->fun();

}

象上面所说的那样,一个typeid()运算子就可以轻松地识别一个对象是否属于某一个类,但mfc并不是用typeid()的运算子来进行动态类型识别,而是用一大堆令人费解的宏.很多学员在这里很疑惑,好象mfc在大部分地方都是故作神秘.使们大家编程时很迷惘,只知道在这里加入一组宏,又在那儿加入一个映射,而不知道我们为什么要加入这些东东.

其实,早期的mfc并没有typeid()运算子,所以只能沿用一个老办法.我们甚至可以想象一下,如果mfc早期就有template(模板)的概念,可能更容易解决rtti问题.

所以,我们要回到“古老”的年代,想象一下,要完成rtti要做些什么事情.就好像我们在一个新型(新型到我们还不认识)电器公司里面,我们要识别哪个是电饭锅,哪个是电磁炉等等,我们要查看登记的各电器一系列的信息,我们才可以比较.鉴别,那个东西是什么!

要登记一系列的消息并不是一件简单的事情,大家可能首先想到用数组登记对象.但如果用数组,我们要定义多大的数组才好呢,大了浪费空间,小了更加不行.所以我们要用另一种数据结构——链表.因为链表理论上可大可小,可以无限扩展.

链表是一种常用的数据结构,简单地说,它是在一个对象里面保存了指向下一个同类型对象的指针.我们大体可以这样设计我们的类:

struct cruntimeclass

{

  ……类的名称等一切信息……

  cruntimeclass * m_pnextclass;//指向链表中下一cruntimeclass对象的指针

};

链表还应该有一个表头与一个表尾,这样我们在查链表中各对象元素的信息的时候才知道从哪里查起,到哪儿结束.我们还要注明本身是由哪能个类派生.
...   下一页
 ·listcontrol的使用     »显示摘要«
    摘要:一、基本使用1.新加listcontrol 控件,属性中的style属性页下的view选择report。并设置其对应的控制变量如:m_list1。 2.初始化,即设置列。 用m_list1。 m_list1.insertcolumn(0,"曲名"); //插入列 m_list1.insertcolumn(1,"类型"); m_list1.insertcolumn(2,"长度"); m_list1......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE