Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi [NonVCL] TreeView PopUp Menü zuordnen (https://www.delphipraxis.net/33364-%5Bnonvcl%5D-treeview-popup-menue-zuordnen.html)

mirage228 5. Nov 2004 17:35


[NonVCL] TreeView PopUp Menü zuordnen
 
Hallo,

ich versuche mit non VCL einem TreeView ein PopUp Menü zuzuordnen:

Delphi-Quellcode:
  // FTree: HWND;
  // FPopUp: HMENU
  FTree := CreateWindowEx(WS_EX_CLIENTEDGE, WC_TREEVIEW, nil,
    WS_VISIBLE or WS_CHILD or TVS_HASLINES or TVS_LINESATROOT
    or TVS_HASBUTTONS, 0, 0, FPage.GetWidth, FPage.GetHeight, FPage.GetHandle,
    0, hInstance, nil);
  FPopUp := CreatePopupMenu;
  AppendMenu(FPopup, MF_STRING, 0, 'Aktualisieren');
  SetMenu(FTree, FPopUp);
Leider erscheint das Menü beim Rechtsklick nicht. Was mache ich falsch und wie kann ich das PopUp Menü anzeigen lassen?

mfG
mirage228

tommie-lie 5. Nov 2004 18:13

Re: [NonVCL] TreeView PopUp Menü zuordnen
 
SetMenu() setzt AFAIK das Fenstermenü, also das, was in der VCL TMainMenu entspricht. Was du brauchst ist aber ein Popupmenü, das könnte man z.B. in der Bearbeitung zum Rechtsklick (WM_LBUTTONDOWN z.B.) über ein TrackPopupMenu() anzeigen lassen.

mirage228 5. Nov 2004 18:38

Re: [NonVCL] TreeView PopUp Menü zuordnen
 
Zitat:

Zitat von tommie-lie
SetMenu() setzt AFAIK das Fenstermenü, also das, was in der VCL TMainMenu entspricht. Was du brauchst ist aber ein Popupmenü, das könnte man z.B. in der Bearbeitung zum Rechtsklick (WM_LBUTTONDOWN z.B.) über ein TrackPopupMenu() anzeigen lassen.

Achso :)

Habs jetzt mit WM_RBUTTONDOWN in der WndProc gemacht, jetzt klappts, danke sehr :)

mfG
mriage228

Luckie 6. Nov 2004 13:23

Re: [NonVCL] TreeView PopUp Menü zuordnen
 
Dafür gibt es extra MSDN-Library durchsuchenwm_contextmenu:
Zitat:

Zitat von PSDK
The WM_CONTEXTMENU message notifies a window that the user clicked the right mouse button ( right clicked) in the window.

Da musst du nicht erst übert die Cursor-Position fetsstellen wo geklickt wurde da:
Zitat:

Zitat von PSDK
wParam
Handle to the window in which the user right clicked the mouse. This can be a child window of the window receiving the message. For more information about processing this message, see the Remarks section.

Und wenn du das benutzt, dann fuinktioniert auch automatisch die "Kontextmenü"-Taste von der Tastatur:
Zitat:

Zitat von PSDK
The WM_CONTEXTMENU message is also generated when the user presses and releases the VK_APPS key.



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz