因为我需要在打开popupmenu  菜单时终止某过程.....

解决方案 »

  1.   

    不是 我是想获取popupmenu的状态(弹出或关闭)
      

  2.   

    BOOL GetMenuItemRect(          HWND hWnd,
        HMENU hMenu,
        UINT uItem,
        LPRECT lprcItem
    );也许这个可以 In order for the returned rectangle to be meaningful, the menu must be popped up if a popup menu or attached to a window if a menu bar. Menu item positions are not determined until the menu is displayed.
      

  3.   

    to coffeemay
    初学者,不明白.能否说得详细点.
    获取popupmenu的屏幕坐标?
      

  4.   

    TPopupMenu.Popup()方法是模态方式调用,后面的语言要等Popup()执行后才执行。procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Button = mbRight then
      begin
        PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
        ShowMessage('Popup已关闭。');
      end;
    end;
      

  5.   

    我的程序是这样的procedure TForm2.tmr4Timer(Sender: TObject);
    begin
     //       Form1.PopupMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
               if Self.Visible  then
    begin
      SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,0);
    end;
    end;
    我为了把一个窗口保持一直置顶,就在timer事件里面添加了上述语句,每隔5S执行一次.
    但当我右键打开改程序系统托盘图标的时候,如果刚好执行了'SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,0);'
    菜单会被关闭.
    所以我想判断当菜单打开时不执行'SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,0);'
    TPopupMenu.Popup()方法好像不是很好用