事件与消息(50分)

  • 主题发起人 主题发起人 wwding68
  • 开始时间 开始时间
W

wwding68

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi 5 开发人员指南 理解windows 消息一节中有这样的一段文字
'应当尽量用事件而不用消息,由于事件的处理是无约定的,因此,处理事件
比处理消息要简单些'
如何理解以上的文字,特别是什仫约定,无约定之类。
 
有意思,up
 
const
WM_GOOD=WM_USER+1

procedure WMGET:Message WM_GOOD;

定义消息,当该消息被捕获后用消息处理函数处理,即为约定
事件是前期约定,比较简单
 
事件和消息没有必然联系.消息只是通知事件发生的一种方法.我们完全可以用别
的方法完成这个功能,比如函数调用的方法.所以,事件响应函数是可以直接调用
的,而不必通过SENDMESSAGE之类的方法.
 
5.5.1 消息处理:不是无约定的
与响应D e l p h i事件不同的是,处理Wi n d o w s消息不是无约定的。当在处理一个消息时, Wi n d o w s
总是指望做一些事情。V C L已经内置了基本的消息处理功能,必须要做的就是调用i n h e r i t e d。可以这
样认为:写一个消息处理过程是为了做一些你要做的事情,调用i n h e r i t e d是为了做一些Wi n d o w s要做
的事情。
注意在处理消息时,还有些事情是有限制的。例如,在处理W M _ K I L L F O C U S消息时,就不
允许将焦点设给另一个控件。
为了证明i n h e r i t e d的作用,可以在清单5 - l中把W M P a i n t ( )方法中的i n h e r i t e d去掉,即代码变成:
因为这样Wi n d o w s就没有机会对W M _ PA I N T消息进行基本的处理,所以,窗体就不会被画出来。
有时候,可能不希望调用i n h e r i t e d。例如,在处理W M _ S Y S C O M M A N D消息时,为了防止窗口被
最大化或最小化,就不能调用i n h e r i t e d。
 
就是说一般处理Windows消息时都需要调用i n h e r i t e d!
 
接受答案 谢谢
 
后退
顶部