rafka hat geschrieben:Irgendwas ist da ganz komisch und deswegen bitte ich um Hilfe. Danke!
Das komische kommt dadurch, das Du 2 mal WaitWindowEvent()
aufrufst, und somit Nachrichten verloren gehen.
Mit 1 x WaitWindowEvent() funktioniert es:
Code: Alles auswählen
Procedure Open_editor()
If OpenWindow(0,0,0,600,300,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered|#PB_Window_Borderless,"Editor")
CreateGadgetList(WindowID())
EditorGadget(0,0,0,600,300)
EndIf
EndProcedure
Open_editor()
AddKeyboardShortcut(0,#PB_Shortcut_Return, 101)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
MessageRequester("MENU","Enter gedrueckt",0)
ActivateGadget(0)
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
AddKeyboardShortcut() setzt allerdings Tasten für das ganze
Fenster, so daß hier Return abgefangen wird und nicht mehr
im Editor funktioniert.
Ist sicherlich nicht das was Du willst, deshalb hier der RichEdit-Weg,
da das EditorGadget auf Windows ein RichEdit-Control ist:
Code: Alles auswählen
Procedure WndProc(hWnd,Msg,wParam,lParam)
Select Msg
Case #WM_SIZE ; Window Resize
ResizeGadget(0,0,0,lParam&$FFFF,(lParam>>16)&$FFFF)
Case #WM_NOTIFY
If lParam
*msgfilter.MSGFILTER = lParam
If *msgfilter\nmhdr\hwndFrom = GadgetID(0) ; Message vom EditorGadget?
If *msgfilter\msg = #WM_KEYDOWN ; Taste gedrueckt?
If *msgfilter\wParam = #VK_RETURN ; Return-Taste?
Beep_(800,50)
;MessageRequester("Info","Enter gedrueckt",0)
;ActivateGadget(0)
EndIf
EndIf
EndIf
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure Open_editor()
If OpenWindow(0,0,0,600,300,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered|#PB_Window_Borderless,"Editor")
CreateGadgetList(WindowID())
EditorGadget(0,0,0,600,300)
; Tasten- und Maus-Events fuer EditorGadget/RichEdit freischalten
SendMessage_(GadgetID(0),#EM_SETEVENTMASK,0,#ENM_KEYEVENTS)
EndIf
EndProcedure
Open_editor()
SetWindowCallback(@WndProc())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver