Иногда, при потере фокуса, всплывающее меню в System Tray при потере фокуса не закрывается. Поэтому, при обработке сообщений для всплывающего меню необходимо поместить окно на передний план и послать ему сообщение WM_NULL.

Code:

procedure TForm1.WndProc(var Msg : TMessage);

var

p : TPoint;

begin

case Msg.Msg of

   WM_USER + 1:

   case Msg.lParam of

     WM_RBUTTONDOWN: begin

        SetForegroundWindow(Handle);

        GetCursorPos(p);

        PopupMenu1.Popup(p.x, p.y);

        PostMessage(Handle, WM_NULL, 0, 0);

     end;

   end;

end;

inherited;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить