Re[3]: TPopupMenu
От: Sergey Ten http://www.fastalgo.com
Дата: 23.01.03 18:07
Оценка:
Здравствуйте, AssAsin, Вы писали:

AA>Мне подумалось: Пуск -> Документы (это ведь popup?)


Я пробовал повесить хук на мышь (там возможно определить, какая кнопка мыши вызовет WM_COMMAND), но попытки активизировать второе popup меню, не убрав с экрана первого, ни к чему не привели:

function MouseProc(nCode: Integer; wParam: LongInt; lParam: LongInt): Integer; stdcall;
var
  p: PMouseHookStruct;
  r: TPoint;
begin
  if (nCode = HC_NOREMOVE) and (wParam <> WM_MOUSEMOVE) then
  begin
    p := Pointer(lParam);

    if wParam = WM_RBUTTONUP then
    begin
      r := Form1.ScreenToClient(p^.pt);

      EndMenu; // Без этого PopupMenu2 не появляется

      PostMessage(Form1.Handle, WM_USER, p^.pt.x, p^.pt.y);

      Result := 1;
      Exit;
    end;
  end;

  Result := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowsHookEx(WH_MOUSE, @MouseProc, HInstance, GetCurrentThreadID);
end;

procedure TForm1.WMUser(var AMessage: TMessage);
begin
  PopupMenu2.Popup(AMessage.WParam, AMessage.LParam);
end;


Так что сомневаюсь я, что там обычный popup. Иначе вот эти ребята остались бы без работы: http://www.animatedmenus.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.