就是DLL产生消息用应用程序处理消息,回调函数是不是可以处理很多种消息,,,如果单独的消息处理过程只能处理一个消息,对吗?
谁给我弄个回调函数处理消息的例子???
再有传递消息的同时可不可以传递一个字符串

解决方案 »

  1.   

    最典型的消息处理函数就是delphi 中各个类的WndProc,你可以只针对一个消息做自己的处理也可以对多个消息处理!
    传递消息的时候因为关于回调函数的参数都是整型的,这也就意味着你只能传递该字串的地址,然后通过对应的指针再来取得!
    你所谓的单独处理一个消息的函数
    是诸如此类的么:proceduer WMSysCommand(var msg: TWMSYSCOMMAND);MESSAGE WM_SYSCOMMAND;
      

  2.   

    是这样的 
    procedure DecodedDataMessage(var msg:TMessage); message userdial ;我现在不太明白自己怎么做 回调函数,谁给我讲讲再有,我昨天自己试了下,传递字符串,,也是传的指针,但是 调用这个指针时出现错误为什么呢??是因为DLL和应用程序不在一个线程就会这样吗
      

  3.   

    DLL用SendMessage函数给应用程序传递消息,应用程序负责接收,可以只针对这个消息进行处理
    I:\Projects\GStone多媒体\DivX\opendivx_src_40a50\divx4windows\bin
      

  4.   

    上面的发错了,不好意思
    你昨天的帖子说的很多消息是不是类似于出错信息什么的?可以在dll和应用程序分别定义一个总的消息,然后应用程序根据接受的具体消息做处理吧
    窗体提供一个消息处理函数(即回调函数),让执行环境调用进行消息处理,在注册窗口类的时候指定消息回调函数
      

  5.   

    怎么做自己的回调函数呢
    我是这样做的,但是收不到消息
    THDProcedure=procedure(msg:TMessage); stdcall;procedure HdProExample(msg:TMessage);stdcall;
    begin
    label1.caption:='收到消息';
    end;
    procedure setcallback(callback:THDProcedure);
    begin
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    setcallback(@HdProExample);
    end;
    ///发送消息的代码应该没有问题,因为我用单独的消息处理过程 ,可以收到消息
      

  6.   

    当然可以啊!
    procedure WndProc(var Message: TMessage); virtual;它之所以声明成虚函数,就是为了override