VC++消息映射

来源:百度知道 编辑:UC知道 时间:2024/05/31 19:52:16
在VC++中如何进行消息映射啊?
能不能讲一下具体的布奏和方法啊
不胜感激

VC++消息映射的思考

作者:郝庆欣

在学习VC++的时候,大家都不可避免的用到消息映射。我们都知道C++是一种面向对象的编程语言,VC++中为什么这样来实现消息映射呢?
首先要明白一个包含了消息处理的Windows程序是如何工作的。
一般来说一个包含了消息处理的Windows程序至少要包含两个函数
第一个:
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
);
第二个:
long FAR PASCAL WndProc(HWND hWnd,WORD message,WORD wParam,LONG lParam);
我们不必纠缠程序实现的细节,只要明白在第一个函数WinMain中要注册WndProc函数,通俗一些的理解就是WinMain告诉Windows系统,听着,我知道你要产生很多消息,我这里有一个WndProc函数负责处理你传递来的各种消息。当然消息的格式都是系统规定好的。

其次要明白C++中是如何实现多态性的。

我们知道多态性实现的关键是晚绑定(或者称为后期绑定),其实质就是编译器并没有在编译期间指定调用函数的绝对地址,而是指定了某个类内部该函数的偏移地址。

为了实现上面的功能,编译器为我们作了手脚

1、 在每个带有虚函数的类中,编译器秘密放置了一个指针,称为Vpointer

2、 当系统运行时,为每个类创建一个VTABLE,其中包含了可以调用虚函数地址。

3、 Vpointer出始化,指向VTABLE,通过在Vtable