Mit WindowCallback und WM_CHAR geht es leider nicht, sobald ein Gadget aktiv ist.
Möchte aber immer das die Zeichen von Hauptprogramm verwaltet wird.

Code: Alles auswählen
Macro LoWord(Value)
(Value & $FFFF)
EndMacro
Procedure Callback(hWnd, Msg, wParam, lParam, id, uData)
If Msg = #WM_PARENTNOTIFY
If Loword(wParam) = #WM_CREATE
SetWindowSubclass(lParam, @Callback(), 0, 0)
EndIf
If Loword(wParam) = #WM_DESTROY
RemoveWindowSubclass(lParam, @Callback(), 0)
EndIf
EndIf
If Msg = #WM_CHAR
Debug "Gadget:" + hWnd + " | CHAR : " + Chr(wParam)
EndIf
ProcedureReturn DefSubclassProc(hWnd, Msg, wParam, lParam)
EndProcedure
Procedure Main()
Protected Event
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 600, 400, "")
SetWindowSubclass(WindowID(0), @Callback(), 0, 0)
ButtonGadget(0, 10, 10, 100, 23, "Button")
StringGadget(1, 10, 40, 100, 23, "")
ContainerGadget(2, 130, 10, 120, 100, #PB_Container_Flat)
StringGadget(#PB_Any, 10, 10, 100, 23, "")
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
EndProcedure:Main()