Intercepter une tentative de collage dans l'éditeur?
Publié : dim. 28/janv./2007 22:19
Salut,
Comment intercepter une tentative de collage dans un éditeur?
Comment intercepter une tentative de collage dans un éditeur?
Forums PureBasic - Français
https://www.purebasic.fr/french/
Code : Tout sélectionner
;------------------------------------------------------
;Window et Gadget
;------------------------------------------------------
Enumeration
#MainForm
#EdtTelephone
EndEnumeration
;------------------------------------------------------
;Variables globales
;------------------------------------------------------
;handle de la fenetre
Global hWnd.l
;handle de l'editbox (peut etre recupere avec gadgetid())
Global hEdtTelephone.l
;proc normale de l'editbox
Global EdtTelephoneOldProc.l
global Quit.b ;= #False
;------------------------------------------------------
;Procedure de sous classement
;------------------------------------------------------
Procedure EdtTelephoneWndProc(WindowID, Message, wParam, lParam)
Select Message
Case #WM_GETTEXT
; debug "#WM_GETTEXT"
; debug GetClipboardText()
; SetClipboardText("modif avant") ; Contenu Clipboard encore modifiable ici
Case #WM_CHAR
debug "#WM_CHAR"
IF wParam=22
debug "CTRL C"
debug GetClipboardText()
SetClipboardText("modif après") ; Contenu Clipboard modifié pour la prochaine fois
ENDIF
Case #WM_PASTE
Debug "#WM_PASTE"
Case #WM_KEYDOWN
chaine$=GetGadgetText(#EdtTelephone)
If wParam = #VK_RETURN
If Len(chaine$) >8
SetGadgetText(#EdtTelephone, Mid(chaine$, 0, 2) +"-"+Mid(chaine$, 3, 2) +"-" +Mid(chaine$, 5, 2) +"-" +Mid(chaine$,7, 2) +"-" +Mid(chaine$, 9, 2) )
SendMessage_(WindowID,#EM_SETSEL,0,15)
ProcedureReturn 0
EndIf
EndIf
EndSelect
ProcedureReturn CallWindowProc_(EdtTelephoneOldProc, WindowID, Message, wParam, lParam)
EndProcedure
;------------------------------------------------------
;Debut de programme
;------------------------------------------------------
hWnd = OpenWindow(#MainForm, 0, 0, 322, 150,"SousClassement", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
If hWnd
If CreateGadgetList(WindowID(#MainForm))
hEdtTelephone = EditorGadget(#EdtTelephone,8,8,306,133)
; hEdtTelephone = StringGadget(#EdtTelephone, 10,10, 200, 20,"", #PB_String_Numeric)
EdtTelephoneOldProc = SetWindowLong_(hEdtTelephone, #GWL_WNDPROC, @EdtTelephoneWndProc())
EndIf
EndIf
SetClipboardText("test") ; Init contenu Clipboard
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
Until Quit = #True Code : Tout sélectionner
Enumeration
#MainForm
EndEnumeration
Enumeration
#Edit
#Edit2
EndEnumeration
Enumeration
#ID_CTRL_V
EndEnumeration
hWnd = OpenWindow(#MainForm, 0, 0, 430, 250,"SousClassement", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
If hWnd
If CreateGadgetList(WindowID(#MainForm))
EditorGadget(#Edit,10,10,200,200)
EditorGadget(#Edit2,220,10,200,200)
StringGadget(10,10,220,400,20,"Copier ce texte et essayer de le coller dans les deux éditeurs")
EndIf
EndIf
AddKeyboardShortcut(#MainForm, #PB_Shortcut_Control|#PB_Shortcut_V, #ID_CTRL_V)
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #ID_CTRL_V
Debug "coller"
If GetActiveGadget()=#Edit2
SendMessage_(GadgetID(#Edit2),#WM_PASTE,0,0)
EndIf
EndSelect
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
Until Quit = #True