Here's my test program:
Code: Select all
Procedure WinCallback(hWnd, uMsg, WParam, LParam)
Select uMsg
Case #WM_KEYDOWN
Debug "$" + Hex(uMsg) + ", #WM_KEYDOWN (" + #WM_KEYDOWN + "), VK=$" + Hex(wparam) + ", lparam=$" + Hex(lparam) + ", prev_key_state=" + Str((lparam & $40000000) >> 30)
ProcedureReturn 0
Case #WM_KEYUP
Debug "$" + Hex(uMsg) + ", #WM_KEYUP (" + #WM_KEYUP + "), VK=$" + Hex(wparam) + ", lparam=$" + Hex(lparam)
ProcedureReturn 0
Case #WM_SYSKEYDOWN
Debug "$" + Hex(uMsg) + ", #WM_SYSKEYDOWN, VK=$" + Hex(wparam) + ", lparam=$" + Hex(lparam) + ", prev_key_state=" + Str((lparam & $40000000) >> 30)
ProcedureReturn 0
Case #WM_SYSKEYUP
Debug "$" + Hex(uMsg) + ", #WM_SYSKEYUP, VK=$" + Hex(wparam) + ", lparam=$" + Hex(lparam)
ProcedureReturn 0
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 50, 50, 400, 200, "Window Callback Test", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
SetWindowCallback(@WinCallback(),0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf