http://blog.csdn.net/stbrine/article/details/6637769
---直接向这个HWND发送字符
procedure TForm1.Button1Click(Sender: TObject);
varend.
---
http://www.cnblogs.com/del/archive/2008/10/24/1319043.html
向Panel1发送 WM_MOUSEMOVE 消息,如何Panel.OnMOUSEMOVE指向了某段代码,则会运行这段代码
Panel1.Perform(WM_MOUSEMOVE, MK_SHIFT, y shl 16 or x);
--
直接使用消息方法是最快的方法
inherited :系统收到消息后, 会告诉顶向下 窗体发生的事情, 然后窗体再做出反应; 当然窗体能否做出反应要看窗体是否有相应的响应代码.
override:改写了父类的该消息方法,要使用inherited,子类才能收到改消息,因为父类的改消息方法被改过了,不是执行以前的那个了。--http://www.cnblogs.com/del/archive/2008/10/24/1319086.htmlApplication.OnMessage响应 WM_MOUSEMOVE 以外的所有消息{这个自定义过程要复合 Application.OnMessage 的参数格式} procedure MyMessage(var Msg: tagMSG; var Handled: Boolean);TApplicationEvents.OnMessage 的第二个参数 Handled 如果是 True, 表示消息已经处理过了, 到此为止.我们可以利用这个特性来屏蔽一些消息procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin if Msg.message = WM_LBUTTONDOWN then begin Memo1.Lines.Add('OnMessage'); Handled := False; {Handled 默认是 False, 这句可以省略} // Handled := True; {如果这样, 下面 OnMouseDown 事件将不会得到执行} end; end;WndProc函数作用:
主要用在拦截并处理系统消息和自定义消息
比如:
windows程序会产生很多消息,比如你单击鼠标,移动窗口都会产生消息。这个函数就是默认的消息处理函数。你可以重载这个函数来制定自己的消息处理流程.procedure WndProc(var Message: TMessage); override;procedure TForm1.WndProc(var Message: TMessage); begin inherited; if Message.Msg = WM_LBUTTONDOWN then ShowMessage('WndProc'); end; end.在TObject类中,有一个Dispatch()方法和一个DefaultHandler()方法,它们都是与消息
分发机制相关的。
Dispatch()负责将特定的消息分发给合适的消息处理函数。首先它会在对象本身类型的类中寻找该消息的处理函数,如果找到,则调用它;如果没有找到而该类覆盖了TObject的DefaultHandler(),则调用该类的DefaultHandler();如果两者都不存在,则继续在其基类中寻找,直至寻找到TObject这一层,而TObject已经提供了默认的DefaultHandler()procedure Dispatch(var Message); override;procedure TForm1.Dispatch(var Message); begin inherited; if TMessage(Message).Msg = WM_LBUTTONDOWN then ShowMessage('Dispatch'); end;http://www.cnblogs.com/del/archive/2008/10/28/1321490.htmlPerform、SendMessage 会直接发送消息到窗体过程;
PostMessage 是把消息放入消息队列.
因为 Application.OnMessage 只接收队列中的消息,
所以 Perform、SendMessage 发送的消息, OnMessage 收不到.OnMessage 只相应消息队列中的消息
http://www.cnblogs.com/del/archive/2008/10/29/1322112.html消息结构纵览
系统标准的消息结构在 Delphi 中被定义为 TMsg
PMsg = ^TMsg; tagMSG = packed record hwnd: HWND; message: UINT; wParam: WPARAM; lParam: LPARAM; time: DWORD; pt: TPoint; end; TMsg = tagMSG; MSG = tagMSG;TMessage 是 VCL 重新定义的消息结构:PMessage = ^TMessage; TMessage = packed record Msg: Cardinal; case Integer of 0: ( WParam: WPARAM; LParam: LPARAM; Result: LRESULT); 1: ( WParamLo: Word; WParamHi: Word; LParamLo: Word; LParamHi: Word; ResultLo: Word; ResultHi: Word); end;