Code: Select all
Global hook
Procedure EG_Column(Gadget)
SendMessage_(GadgetID(gadget),#EM_EXGETSEL,0,Pos.CHARRANGE)
ProcedureReturn (Pos\cpMax-(SendMessage_(GadgetID(gadget),#EM_LINEINDEX,SendMessage_(GadgetID(gadget), #EM_EXLINEFROMCHAR,0,Pos\cpMin),0))+1)
EndProcedure
Procedure EG_Row(Gadget)
SendMessage_(GadgetID(gadget),#EM_EXGETSEL,0,Pos.CHARRANGE)
ProcedureReturn SendMessage_(GadgetID(gadget),#EM_EXLINEFROMCHAR,0,Pos\cpMin)+1
EndProcedure
Procedure.l KeyboardHook(nCode.i, wParam.i, lParam.i)
If nCode < 0
ProcedureReturn CallNextHookEx_(hook, nCode, wParam, lParam)
EndIf
If wParam = #VK_INSERT Or wParam = #VK_NUMPAD0
ProcedureReturn 1
EndIf
ProcedureReturn CallNextHookEx_(hook, nCode, wParam, lParam)
EndProcedure
OpenWindow(0, 200, 200, 400, 240,"Editor Test", #PB_Window_SystemMenu| #PB_Window_MinimizeGadget| #PB_Window_MaximizeGadget| #PB_Window_ScreenCentered)
CreateStatusBar(0, WindowID(0))
AddStatusBarField(60)
AddStatusBarField(40)
AddStatusBarField(60)
AddStatusBarField(40)
AddStatusBarField(50)
AddStatusBarField(60)
StatusBarText(0, 0, "Line : ")
StatusBarText(0, 2, "Column: ")
StatusBarText(0, 4, "Mode :")
StatusBarText(0, 5, "Insert")
EditorGadget(1,0,0, 400, 180)
SendMessage_(GadgetID(1), #EM_SETTARGETDEVICE, 0, 0)
Text$="{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fswiss\fcharset0 Arial;}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue0;}"
Text$ = Text$ + "{\*\generator Msftedit 5.41.15.1503;}\viewkind4\uc1\pard\f0\fs20 Hello, this is \cf1\b\fs32 RTF\cf2\b0\fs20 direct!\cf0\par}"
SetGadgetText(1, Text$)
ButtonGadget(2,5,185,80,24,"Toggle",#PB_Button_Toggle)
Repeat
StatusBarText(0, 1,Str(EG_Row(1)))
StatusBarText(0, 3,Str(EG_Column(1)))
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Q =1
Case #PB_Event_Gadget
Select EventGadget()
Case 2
If GetGadgetState(2) = 0
StatusBarText(0, 5, "Insert")
Else
StatusBarText(0, 5, "Overwrite")
EndIf
UnhookWindowsHookEx_(hook)
SendMessage_(GadgetID(1), #WM_KEYDOWN, #VK_INSERT, 0)
SendMessage_(GadgetID(1), #WM_KEYUP, #VK_INSERT, 0)
SetActiveGadget(1)
hook = SetWindowsHookEx_(#WH_KEYBOARD, @KeyboardHook(),GetModuleHandle_(0), GetWindowThreadProcessId_(WindowID(0), 0))
EndSelect
EndSelect
Until Q = 1
UnhookWindowsHookEx_(hook)