引言: 作者: 林水怒
来源:zdnet
CObject和CRuntimeClass是MFC中两个非常重要的类/结构,绝大部分MFC类都是以CObject做为基类, CRuntimeClass结构同CObject密不可分,了解它们对于深入理解MFC具有重要意义。
摘要:信息产业部电子第二十二研究所 郎锐
一、引言
钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。钩子的种类很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时钩子函数可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。这有点类似与mfc中的pretranslatemessage函数,所不同的......
摘要:曹朝晖
问题的提出
软件封面是指软件启动加载时显示的背景画面,它不但可以起到吸引用户目光的作用,更重要的是当一些程序的初始化工作需要数秒钟时,软件封面可以用来向用户提供一些与该软件相关的信息。软件封面一般包含了软件名称、版本、用户名、用户所在的公司名等信息,显示方式一般分为静态画面和动画。软件封面的制作方法有多种,从易到难,由浅到深,编程人员可以根据需要选择不同的制作方法。本文介绍3种软件封......
了解CObject 和 CRuntimeClass上一页 ...
// implementation 【程序编程相关:
关于GetRecordCount函数的使】
【推荐阅读:
socket实现tcp/ip服务端源码,】
static cruntimeclass* pascal load(carchive& ar, uint* pwschemanum); 【扩展信息:
在VC中编译、运行程序的小知识点
】
void store(carchive& ar) const;
// cruntimeclass objects linked together in simple list
cruntimeclass* m_pnextclass; // linked list of registered classes
};
二.cobject类
cobject是mfc类的大多数类的基类,主要是通过它实现:
(1).运行类信息;(2).序列化;(3).对象诊断输出;(4).同集合类相兼容;
(1).运行时类信息:
注意:要想使用cruntimeclass结构得到运行时类信息,你必须在你的类中包括declare_dynamic/implement_dynamic. declare_dyncreate/implement_dyncreate或declare_serial/implement_serial.但你的类必须是从cobject派生的才能使用这些宏, 因为通过declare_dynamic将定义一个实现如下的函数:
cruntimeclass* pascal b::_getbaseclass()
{
return runtime_class(base_name);
}
其中的runtime_class是这样定义的
#define runtime_class( class_name ) \
(cruntimeclass *)(&class_name::class##class_name);
即得到类中的cruntimeclass对象指针,显而易见,如果没有基类你用implement_dynamic时将得到一个编译错误. 除非你象cobject一样不用declare_dynamic而定义与实现了这些函数,cobject中的getbaseclass只是简单的返回null....
下一页 摘要:windows95的任务条(taskbar)上有一个状态区,可以显示当前输入法(中文版)、当前时间等信息,当启动打印管理器时还可显示打印管理器的图标,表明打印机正在工作。我们可以使用这一技术为正在后台工作的程序设置一个图标,以显示它的工作状态,用户可以通过鼠标点击来查询详细情况或修改工作参数。下面对其实现方法作一介绍。
图标的添加和删除
实现这两个操作都是通过调用shell_notifyi......