Re: EditorGadget receive first clic and hide cursor
Posted: Wed Feb 10, 2010 1:38 am
See if this behaves the way you want:
Code: Select all
Procedure EditProc(hwnd, msg, wparam, lparam)
oldproc = GetProp_(hwnd, "oldproc")
Select msg
Case #WM_NCDESTROY
RemoveProp_(hwnd, "oldproc")
Case #WM_MOUSEMOVE
If GetForegroundWindow_()<>WindowID(0)
SetForegroundWindow_(WindowID(0))
EndIf
If GetActiveGadget()<>GetDlgCtrlID_(hwnd)
SetActiveGadget(GetDlgCtrlID_(hwnd))
EndIf
Case #WM_KEYDOWN, #WM_KEYUP
ProcedureReturn 0
EndSelect
ProcedureReturn CallWindowProc_(oldproc, hwnd, msg, wparam, lparam)
EndProcedure
Procedure WinProc(hwnd, msg, wparam, lparam)
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_COMMAND
If lparam = GadgetID(0)
If wparam>>16 = #EN_SETFOCUS
HideCaret_(GadgetID(0))
EndIf
EndIf
EndSelect
ProcedureReturn result
EndProcedure
OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
hwnd = EditorGadget(0, 8, 8, 306, 133, #PB_Editor_ReadOnly)
SetGadgetText(0,"Hello I'm an editor gadget")
SetProp_(hwnd, "oldproc", SetWindowLongPtr_(hwnd, #GWL_WNDPROC, @EditProc()))
SetWindowCallback(@WinProc())
Repeat
Event = WaitWindowEvent()
If Event = #WM_LBUTTONDOWN
MessageRequester("", "Hello WM")
EndIf
Select #PB_Event_Gadget
Case #PB_EventType_LeftClick
MessageRequester("", "Hello PB")
EndSelect
Until Event = #PB_Event_CloseWindow