引言: 作者: 林水怒
来源:zdnet
CObject和CRuntimeClass是MFC中两个非常重要的类/结构,绝大部分MFC类都是以CObject做为基类, CRuntimeClass结构同CObject密不可分,了解它们对于深入理解MFC具有重要意义。
摘要:信息产业部电子第二十二研究所 郎锐
一、引言
钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。钩子的种类很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时钩子函数可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。这有点类似与mfc中的pretranslatemessage函数,所不同的......
摘要:曹朝晖
问题的提出
软件封面是指软件启动加载时显示的背景画面,它不但可以起到吸引用户目光的作用,更重要的是当一些程序的初始化工作需要数秒钟时,软件封面可以用来向用户提供一些与该软件相关的信息。软件封面一般包含了软件名称、版本、用户名、用户所在的公司名等信息,显示方式一般分为静态画面和动画。软件封面的制作方法有多种,从易到难,由浅到深,编程人员可以根据需要选择不同的制作方法。本文介绍3种软件封......
了解CObject 和 CRuntimeClass作者: 林水怒
来源:zdnet 【程序编程相关:
关于GetRecordCount函数的使】
【推荐阅读:
socket实现tcp/ip服务端源码,】
cobject与cruntimeclass是mfc中两个非常重要的类/结构,绝大部分mfc类都是以cobject做为基类, cruntimeclass结构同cobject密不可分,了解它们对于深入理解mfc具有重要意义. 【扩展信息:
在VC中编译、运行程序的小知识点
】
一.cruntimeclass结构
要理解cobject,我们先来看一下cruntimeclass这个在mfc中至关重要的一个结构.
每个从cobject中派生的类都有有一个cruntimeclass对象同它关联以完成在运行时得到类实例的信息或者是它的基类. 在afx.h中它的定义如下:
struct cruntimeclass
{
// attributes
lpcstr m_lpszclassname; //类名,一般是指包含cruntimeclass对象的类的名称
int m_nobjectsize; //包含cruntimeclass对象的类sizeof的大小,不包括它分配的内存
uint m_wschema; // schema number of the loaded class
cobject* (pascal* m_pfncreateobject)(); // null => abstract class 指向一个建立实例的构造函数
#ifdef _afxdll
cruntimeclass* (pascal* m_pfngetbaseclass)();
#else
cruntimeclass* m_pbaseclass;
#endif
//以上m_pbaseclass的指针(函数)是mfc运行时确定类层次的关键,它一个简单的单向链表
// operations
cobject* createobject(); //这个函数给予cobject 派生类运行时动态建立的能力
bool isderivedfrom(const cruntimeclass* pbaseclass) const;
//这个函数使用 m_pbaseclass或 m_pfngetbaseclass遍历整个类层次确定是否pbaseclass指向的类是基类,
//使用它可以判断某类是否是从pbaseclass指向的类在派生来....
下一页 摘要:windows95的任务条(taskbar)上有一个状态区,可以显示当前输入法(中文版)、当前时间等信息,当启动打印管理器时还可显示打印管理器的图标,表明打印机正在工作。我们可以使用这一技术为正在后台工作的程序设置一个图标,以显示它的工作状态,用户可以通过鼠标点击来查询详细情况或修改工作参数。下面对其实现方法作一介绍。
图标的添加和删除
实现这两个操作都是通过调用shell_notifyi......