我编了一个程序,在它运行时,在任务栏右下角出现一个小图标,我想在用鼠标点击图标时弹出菜单,如何实现,请高手指教。!!

解决方案 »

  1.   

    你在定义记录TNotifyIconData的时候不是定义了uCallbackMessage吗?在该自定义消息的处理方法中,判断Msg.lParam的值是否等于WM_RBUTTONUP,是的话用var P: TPoint;GetCursorPos(p);
    SetForegroundWindow(Self);
    PopupMenu.Popup(p.x,p.y);弹出菜单
      

  2.   

    我写了下面的代码
    if (message.LParam=wm_rbuttondown) then
    SetForegroundWindow(Self.Handle);
    GetCursorPos(p);
    pm.Popup(p.X,p.Y);
    pm是我预先编好的一个弹出菜单,可是在程序运行后,当鼠标位置在图标上时(并未点击),pm的菜单就出现,并不停地闪烁,无法控制,只有当鼠标移开后,才能正常显示,请帮忙解决。
      

  3.   

    if (message.LParam=wm_rbuttondown) then
    begin
      SetForegroundWindow(Self.Handle);
      GetCursorPos(p);
      pm.Popup(p.X,p.Y);
    end;
      

  4.   

    自定义消息,用于处理用户在图标上点击鼠标的事件
    mousemsg = wm_user + 1
    然后增加PopupMenu1控件,编辑要显示的菜单.
    后添加代码
      if message.LParam = wm_rbuttonup then begin //用鼠标右键点击图标
          getcursorpos(mousept); //获取光标位置
          popupmenu1.popup(mousept.x, mousept.y);
          //在光标位置弹出选单
        end;
      if message.LParam = wm_lbuttonup then begin //用鼠标左键点击图标
          //显示应用程序窗口
          ShowWindow(Handle, SW_SHOW);
          //在任务栏上显示应用程序窗口
          ShowWindow(Application.handle, SW_SHOW);
          SetWindowLong(Application.Handle, GWL_EXSTYLE,
            not (GetWindowLong(Application.handle, GWL_EXSTYLE)
            or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW));
        end;