http://www.purebasic.fr/german/viewtopic.php?t=9789
sollte unbedingt unter "Code, Tipps und Tricks stehen.
In einem EditorGadget öffnet sich mit der rechten Maustaste wie bei WordPad und anderen Editoren ein Popup-Fenster mit Kopieren, Einfügen, Ausschneiden usw:
Code: Alles auswählen
;
; Popup Menu im Editor-Gadget
; 12/2005 by Donald
; angepasst an PB4.00
;
Enumeration
#Window_0
#Editor_0
EndEnumeration
Global Proc
Procedure Open_Window()
If OpenWindow(#Window_0, 216, 0, 600, 300, "Popup Menu im Editor-Gadget" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar)
If CreateGadgetList(WindowID(#Window_0))
EditorGadget(#Editor_0, 10, 10, 580, 280)
EndIf
EndIf
EndProcedure
Procedure EditorProc(hwnd,msg,wParam,lParam)
If msg = #WM_CONTEXTMENU
DisplayPopupMenu(10,WindowID(#Window_0))
EndIf
ProcedureReturn CallWindowProc_(Proc,hwnd,msg,wParam,lParam)
EndProcedure
PopupMenu=CreatePopupMenu(10)
MenuItem(101, "Rückgängig")
MenuBar()
MenuItem(102, "Ausschneiden")
MenuItem(103, "Kopieren")
MenuItem(104, "Einfügen")
MenuItem(105, "Löschen")
MenuBar()
MenuItem(106, "Alles markieren")
Open_Window()
Proc = SetWindowLong_(GadgetID(#Editor_0),#GWL_WNDPROC,@EditorProc())
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
If EventWindow()=#Window_0
quitEditor=1
EndIf
Case #PB_Event_Menu
Select EventMenu()
Case 101
SendMessage_(GadgetID(#Editor_0),#WM_UNDO,0,0)
Case 102
SendMessage_(GadgetID(#Editor_0),#WM_CUT,0,0)
Case 103
SendMessage_(GadgetID(#Editor_0),#WM_COPY,0,0)
Case 104
SendMessage_(GadgetID(#Editor_0),#WM_PASTE,0,0)
Case 105
SendMessage_(GadgetID(#Editor_0),#WM_CLEAR,0,0)
Case 106
lang = Len(GetGadgetText(#Editor_0))
SendMessage_(GadgetID(#Editor_0),#EM_SETSEL,1,-1)
EndSelect
EndSelect
Until quitEditor
CloseWindow(#Window_0)