我在一个Form中用SendMessage向主Form发送消息
用的Handle是主Form的Handle
如果不用GetMessage函数,主Form如何获得这个消息呢
获得消息后,在什么函数里做我想做的操作呢?

解决方案 »

  1.   

    自定义消息吗?
    用消息处理函数啊:
    procedure WM_UserMsg(var Msg: TMessage); message WM_USER+1;
    类似这种的
      

  2.   

    主Form中定义:private
        procedure OnDownDeviceComAlarm(var Msg:TMessage);message MsgDownDeviceComAlarm;向主Form发送消息:
        SendMessage(MainHWnd,MsgDownDeviceComAlarm,0,0);自动执行消息函数OnDownDeviceComAlarm。
      

  3.   

    const
        MsgDownDeviceComAlarm        =   WM_USER+501;
      

  4.   

    我消息是在第一个Form中定义的啊
      

  5.   

    我不大懂
    你啊能告诉我
    在第一个form里做什么
    在主Form里做些什么啊
      

  6.   

    在第一个FORM中定义也可以发送啊
      

  7.   

    希望你们能把delphi处理的机制告诉我啊
    我以前是学C的 就知道一边SendMessage 另一边要GetMessage才好控制消息啊
    现在好象不需要GetMessage也可以做的,我想知道怎么做,和为什么可以这么做啊
      

  8.   

    那说起来话就长了,你还是找相关的资料去看吧。
    具体到你这个问题,你可以在主窗体的private部分声明一个消息处理函数:
    procedure WM_UserMsg(var Msg: TMessage); message WM_USER+1;
    然后在这个函数中写你的消息处理代码。
    在第一个form中发消息给主form:
    SendMessage(MainForm.Handle, WM_USER+1, 0, 0);
    或者使用MainForm.Perform(WM_USER+1, 0, 0);
    其中lparam和wparam是不是0,要看你的需要了。主form不用去调用什么GetMessage,这些Delphi都会帮你搞掂,SendMessage后就会执行到你在主form中定义的消息处理函数。