我写了个托盘程序,我定义了一个消息处理了左键双击和右键单击消息。
弹出菜单是正常了。可是在弹出菜单之后我的鼠标点击不在弹出菜单窗口时,
它不能自动关闭。 但我看了人家的是可以的。 各位老大怎么解决着个问题啊??

解决方案 »

  1.   

    在弹出菜单之前加上
    SetForegroundWindow(Handle);
      

  2.   

    也就是在你处理托盘的WM_RBUTTONUP消息里面
      

  3.   

    SetForegroundWindow(Handle);
    TO lonoaer() : Handle  指的是哪窗口的句柄?
      

  4.   

    //我查了网上的应该  lonoaer()  是正确的>
    procedure TMainForm.MyTrayMessage(var message: Tmessage);
    var //托盘消息处理事件
      CursorPos : TPoint;
    begin
      //在这里处理用户点击托盘图标事件,可以根据WM_MOUSEMOVE消息的不同情况产生不同的回应,例如区别对待单击和双击等等
      case message.lParam of
      WM_RBUTTONDOWN :
      begin
        GetCursorPos(CursorPos);
        SetForegroundWindow(handle);
        //此句作用是当程序失去焦点时,弹出菜单也随之消失。
        Application.ProcessMessages;
        //取得光标当前位置
        TrayPopMenu.Popup( CursorPos.x ,CursorPos.y );
        PostMessage(Application.MainForm.Handle, WM_NULL, 0, 0);
      end;
      end;end; 
      

  5.   

    lonoaer()   正确,就是这样. OK 散分