消息到底是怎么回事呢?如何用呢?请高手扼要解答!(10分)

  • 主题发起人 主题发起人 downage
  • 开始时间 开始时间
D

downage

Unregistered / Unconfirmed
GUEST, unregistred user!
消息就是WINDOWS应用程序这间或与系统之间一种广播形式,如:Windows就要关闭时会向
所有应用程序发出特定信息,让所有的应用程序都知道系统就要关闭了。
就像学校的广播里喊人一样。
 
给你举个例子,自己看吧:
procedure WMMyTrayIconCallBack(var Msg : TMessage);
message WM_MYTrayIconCallBack;//这个就是消息
//消息有好多种,比如单击,双击,关闭,击键等等这是个右下角图标的消息

procedure TMainForm.WMMyTrayIconCallBack(var Msg: TMessage);
var
CursorPos : TPoint;
begin
RPopMenu.AutoPopup:=False;
case Msg.lParam of
WM_LBUTTONDOWN ://左键按下
if Application.MainForm.Showing then
Application.MainForm.Hide
else
begin
Application.MainForm.Show;
SetForegroundWindow(Handle);//窗体置前
end;
WM_RBUTTONDOWN ://右键按下;
begin
GetCursorPos(CursorPos);
RPopMenu.Popup(CursorPos.x,CursorPos.y);
end;
end;
end;
 
这涉及到OOP编程问题,简单讲吧,以前编程是过程型的,程序语句
一条一条顺序执行;而目前,大部分编程工具均是面向对象的,简称
OOP,我们可以参考一下经典的WINDOWS程序,其主程序体(主窗口)
均是一个循环语句,内部的循环体仅仅是消息处理,其它的附属窗体均
由它控制,窗口即可以接受消息,自身也可以发送消息。
 
比如像第二位老师说的,窗口如何接收,系统就要关闭的消息呢?!
 
举一个例子来说:
一个程序(或者一个消息接受体比如:一个Panel)好像一个人(夸张一点,脑子有点不好使!)
你叫他干什么,它就干什么!
你叫他跳,它就跳(相当于Windows给你的程序发OnClose的消息).
但是还有其他的事情,
比如说你叫他唱歌,但是唱什么歌等等,就要你事先去教他了(相当于你在OnClick事件中写代码)
比如说你叫他吟诗,但是你有没有教他(相当于你在OnMousemove事件中没有代码),它就没有反应,

句柄是什么?
就相当于这个人的名字(可能不太恰当,名字可以几个人用一个,但是句柄不能多个消息接受体接受)

 
后退
顶部