这里有些历史渊源
1。 最早的windows 引入了消息机制来传递通讯,有效的进行程序模块间异步操作,
在windows 31也是多任务的关键。但是典型的消息处理程序是
winproc ();
{
case WM_PAINT :
...
case WM_TIMER :
...
case WM_XXXX :
...
default :
defaultDealer.;
}
导致了大量的代码集中,看起来不够结构化也不清晰。
2。 vc引入了两个宏
DECLARE_MESSAGES_MAP ,IMPLEMENT_MESSAGE_MAP 和其他辅助宏
巧妙的实现了消息和函数的对应关系,他的宏最终实现了一个复杂的消息分派连表结构,
在由类体系处理进行消息的分发。这样的结果就是你指定消息的名称和函数的对应关系
windows 和mfc 就可以将消息的处理交给这个函数,从而程序更加模块化,详细信息可以
在www.csdn.net/expert/jjhou 下载dissecting mfc ,免费。
vc里的这个就是正宗的消息映射的源头。
3. 只有delphi ,干脆连macro 都不要了,直接把消息处理和映射内建在vcl内,你只要在类
函数后指定一个消息名称就可以了,如
type MyMessgeDealer =TWinControl
MyPainterFunc(var msg:TMessages);message WM_PAINT;
end
MyPainterFunc(var msg:TMessages);message WM_PAINT;
begin
.. 在绘画。
end;
如果在delophi内使用消息,你不必要了解什么消息映射
你可以比较,尤其在大量处理消息的时候,那一个看起来更简洁,容易理解。
可以说这些努力主要就是为了编一个简单,易于理解的程序,但是为了这个好处,要学习一些不了解的新
东西,就是代价了。