AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi mbLeft und mbRight bei Menü- und Popup-Items unterscheiden?
Thema durchsuchen
Ansicht
Themen-Optionen

mbLeft und mbRight bei Menü- und Popup-Items unterscheiden?

Ein Thema von max666 · begonnen am 26. Dez 2003 · letzter Beitrag vom 26. Dez 2003
Antwort Antwort
max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#1

mbLeft und mbRight bei Menü- und Popup-Items unterscheiden?

  Alt 26. Dez 2003, 10:22
Hallo!

Weiß jemand, wie man die Ereignisse "mbLeft!" und "mbRight" beim Betätigen eines Menü- oder Popup-Items ermitteln kann, um verschiedene Funktionen darauf zu setzen?

Gruß aus dem Emsland
Max
  Mit Zitat antworten Zitat
Dagon

Registriert seit: 13. Jul 2003
505 Beiträge
 
Delphi 7 Professional
 
#2

Re: mbLeft und mbRight bei Menü- und Popup-Items unterscheid

  Alt 26. Dez 2003, 11:05
Das ist wohl nicht möglich, da die beiden Menüs kein OnMouseDown-Ereignis haben.
  Mit Zitat antworten Zitat
Benutzerbild von p0ke
p0ke

Registriert seit: 21. Dez 2003
Ort: Osnabrück
121 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: mbLeft und mbRight bei Menü- und Popup-Items unterscheid

  Alt 26. Dez 2003, 11:59
Hi,

habe mal bei google gesucht und folgendes gefunden, vieleicht hilft dir das weiter:



Delphi-Quellcode:
private
    { Private declarations }
    hMenuUp: Integer;
    procedure EnterMenu(var Msg: TMessage); message WM_ENTERMENULOOP;
    procedure ExitMenu(var Msg: TMessage); message WM_EXITMENULOOP;
    procedure InitMenu(var Msg: TMessage); message WM_INITMENUPOPUP;


var
  Form1: TForm1;
  hMHook: Integer;



implementation

function HookFunc(Code, wParam: Integer; var MouseStrut: TMOUSEHOOKSTRUCT): Integer; stdcall;
var
MenuItem: cardinal;
begin
Result:=CallNextHookEx(hMHook, Code, wParam, Integer(@MouseStrut));
if Code < 0 then Exit;
{this test for the Right button Up and if the hMenuUp if the first sub-menu in the main menu}
if (Code = HC_ACTION) and (wParam = WM_RBUTTONUP) and
    (Form1.hMenuUp = Form1.MainMenu1.Items[0].Handle) then
      begin
   {get the menu item of the of the sub-menu clicked on}
      MenuItem := Cardinal(windows.MenuItemFromPoint(Form1.Handle, Form1.MainMenu1.Items[0].Handle, MouseStrut.pt));
      if MenuItem = 0 then // if Top Menu Item then write some numbers on the Label for a Right click on that Item
        Form1.Label1.Caption := 'WOW '+IntToStr(MouseStrut.pt.x)+' '+IntToStr(MouseStrut.pt.y)+' '+IntToStr(MenuItem) else
        Form1.Label1.Caption := 'Not Item zero';

      end;
end;


procedure TForm1.InitMenu(var Msg: TMessage);
var
MRect: TRect;
begin
Msg.Result := 0;
hMenuUp := Msg.WParam;
{get the handle of the sub-menu that is showing in the hMenuUp}
end;

procedure TForm1.EnterMenu(var Msg: TMessage);
begin
{start the hook when the menu is shown}
Msg.Result := 0;
if (Msg.WParam = 0) and (hMHook = 0) then
hMHook := SetWindowsHookEx(WH_MOUSE, @HookFunc, hInstance, 0);
end;

procedure TForm1.ExitMenu(var Msg: TMessage);
begin
{kill hook on menu close}
Msg.Result := 0;
if hMHook <> 0 then
if UnhookWindowsHookEx(hMHook) then
hMHook := 0;
end;
Zum testen einfach ein Menu auf dein Form und ein Label1. Beim Rechtsklick auf des Menuitem wird dann WOW und die Mouseposition angezeigt, wenn alles klappt.
Bei mir hats funktioniert. Ich hoffe ich hab dich richtig verstanden und es ist das was du brauchst.

Gruss p0ke
René
There are only 10 types of people in the world: Those who understand binary, and those who don't.

Mein Projekt bei DP: ScreenCaptureV2
  Mit Zitat antworten Zitat
max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#4

Re: mbLeft und mbRight bei Menü- und Popup-Items unterscheid

  Alt 26. Dez 2003, 12:27
Hallo!

Ja super! Das Beispiel kann ich auf mein Programm anwenden.
Danke noch einmal und einen guten Rutsch.

Gruß
Max
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz