Web gadget en édition ...ça marche mais comment ?
Publié : dim. 20/avr./2008 8:46
Salut à tous les accros de la prog
J'ai besoin d'un éditeur de page html. Une version basique me suffit, insertion et mise en forme de textes, d'images. J'ai trouvé des codes sur les forums de purebasic et particulièrement un qui m'interesse. J'arrive à le faire marcher mais je ne comprends pas vraiment ce qui se passe !
Si une personne pouvait me détailler le code, et pourquoi on fait ce que l'on y fait, cela me permetterait d'aller plus loin.
Me renseigner sur où trouver les info pour aller plus loin.
Merci de m'avoir lu et bonne journée à tous.

J'ai besoin d'un éditeur de page html. Une version basique me suffit, insertion et mise en forme de textes, d'images. J'ai trouvé des codes sur les forums de purebasic et particulièrement un qui m'interesse. J'arrive à le faire marcher mais je ne comprends pas vraiment ce qui se passe !

Si une personne pouvait me détailler le code, et pourquoi on fait ce que l'on y fait, cela me permetterait d'aller plus loin.
Me renseigner sur où trouver les info pour aller plus loin.
Merci de m'avoir lu et bonne journée à tous.

Code : Tout sélectionner
Enumeration 1
#olecmdid_open
#olecmdid_new
#olecmdid_save
#olecmdid_saveas
#olecmdid_savecopyas
#olecmdid_print
#olecmdid_printpreview
#olecmdid_pagesetup
#olecmdid_spell
#olecmdid_properties
#olecmdid_cut
#olecmdid_copy
#olecmdid_paste
#olecmdid_pastespecial
#olecmdid_undo
#olecmdid_redo
#olecmdid_selectall
#olecmdid_clearselection
#olecmdid_zoom
#olecmdid_getzoomrange
#olecmdid_updatecommands
#olecmdid_refresh
#olecmdid_stop
#olecmdid_hidetoolbars
#olecmdid_setprogressmax
#olecmdid_setprogresspos
#olecmdid_setprogresstext
#olecmdid_settitle
#olecmdid_setdownloadstate
#olecmdid_stopdownload
#olecmdid_ontoolbaractivated
#olecmdid_find
#olecmdid_delete
#olecmdid_httpequiv
#olecmdid_httpequiv_done
#olecmdid_enable_interaction
#olecmdid_onunload
#olecmdid_propertybag2
#olecmdid_prerefresh
#olecmdid_showscripterror
#olecmdid_showmessage
#olecmdid_showfind
#olecmdid_showpagesetup
#olecmdid_showprint
#olecmdid_clos
#olecmdid_allowuilesssaveas
#olecmdid_dontdownloadcss
#olecmdid_updatepagestatus
#olecmdid_print2
#olecmdid_printpreview2
#olecmdid_setprinttemplate
#olecmdid_getprinttemplate
#olecmdid_pageactionblocked = 55; no 53 or 54
#olecmdid_pageactionuiquery
#olecmdid_focusviewcontrols
#olecmdid_focusviewcontrolsquery
#olecmdid_showpageactionmenu
EndEnumeration
Enumeration 0
#olecmdexecopt_dodefault
#olecmdexecopt_promptuser
#olecmdexecopt_dontpromptuser
#olecmdexecopt_showhelp
EndEnumeration
Enumeration
#idm_alignbottom
#idm_alignhorizontalcenters
#idm_alignleft
#idm_alignright
#idm_aligntogrid
#idm_aligntop
#idm_alignverticalcenters
#idm_arrangebottom
#idm_arrangeright
#idm_bringforward
#idm_bringtofront
#idm_centerhorizontally
#idm_centervertically
#idm_code
#idm_delete =17
#idm_fontname
#idm_fontsize
#idm_group
#idm_horizspaceconcatenate
#idm_horizspacedecrease
#idm_horizspaceincrease
#idm_horizspacemakeequal
#idm_insertobject
#idm_multilevelredo =30
#idm_sendbackward =32
#idm_sendtoback
#idm_showtable
#idm_sizetocontrol
#idm_sizetocontrolheight
#idm_sizetocontrolwidth
#idm_sizetofit
#idm_sizetogrid
#idm_snaptogrid
#idm_taborder
#idm_toolbox
#idm_multilevelundo =44
#idm_ungroup
#idm_vertspaceconcatenate
#idm_vertspacedecrease
#idm_vertspaceincrease
#idm_vertspacemakeequal
#idm_justifyfull
#idm_backcolor
#idm_bold
#idm_bordercolor
#idm_flat
#idm_forecolor
#idm_italic
#idm_justifycenter
#idm_justifygeneral
#idm_justifyleft
#idm_justifyright
#idm_raised
#idm_sunken
#idm_underline
#idm_chiseled
#idm_etched
#idm_shadowed
#idm_find
#idm_showgrid = 69
EndEnumeration
#IDM_2D_POSITION = 2394
;#msocmdexecopt_dodefault = 0
Debug "#IDM_BOLD = "+Str(#idm_bold )
If OpenWindow(0, 0, 0, 640, 480, "WebGadget Edit", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
WebGadget(0, 5, 5, 630, 340, "www.google.com")
ButtonGadget(1, 5, 350, 100, 25, "Bold")
ButtonGadget(2, 110, 350, 100, 25, "Test")
ButtonGadget(3, 210, 350, 100, 25, "Delete")
; get webgadgets IWebBrowser2 interface:
Browser.IWebBrowser2 = GetWindowLong_(GadgetID(0), #GWL_USERDATA)
; wait For page To be loaded..
Repeat
While WindowEvent(): Wend
Delay(1)
Browser\get_Busy(@IsBusy.l)
Until IsBusy = 0
; get the document interface
If Browser\get_Document(@DocumentDispatch.IDispatch) = #S_OK
; query For IHTMLDocument3:
If DocumentDispatch\QueryInterface(?IID_IHTMLDocument2, @Document.IHTMLDocument2) = #S_OK
; here you have a IHTMLDocument2 pointer, can work with it...
Document\put_designMode("On") ; Turns on Edit Mode
;Document\put_designMode(Ansi2Uni("On")) ; Turns on Edit Mode ;
CmdTarget.IOleCommandTarget
If DocumentDispatch\QueryInterface(?IID_IOleCommandTarget, @CmdTarget.IOleCommandTarget) = #S_OK
CmdTarget\Exec(?CGID_MSHTML, #IDM_2D_POSITION, #OLECMDEXECOPT_DONTPROMPTUSER, @var, NULL) ;Lets you drag drop items
; CmdTarget\Release()
EndIf
Document\Release()
EndIf
DocumentDispatch\Release()
EndIf
vb.l
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget ;checks For the events
Select EventGadget() ;Checks For Gadget Events
Case 0
Debug "Web Gadget "
Case 1
Debug "bold button "
;Document\execCommand(Ansi2Uni("Delete"), #False, #Null, @vOut)
CmdTarget\Exec(?CGID_MSHTML, #idm_bold,#OLECMDEXECOPT_DONTPROMPTUSER , 0, 0)
; Document\execCommand(Ansi2Uni("Bold"), #False, #Null, @vOut)
Case 2
Debug "test button "
Document\queryCommandState("Bold", @vb)
;Document\queryCommandState(Ansi2Uni("Bold"), @vb)
MessageRequester("Bold State", Str(vb))
Case 3
Debug "delete button "
CmdTarget\Exec(?CGID_MSHTML, #idm_delete, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
EndSelect
EndIf
If GetForegroundWindow_() = WindowID(0)
If GetAsyncKeyState_(#VK_DELETE)
CmdTarget\Exec(?CGID_MSHTML, #idm_delete, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow
If CmdTarget
CmdTarget\Release()
EndIf
EndIf
EndIf
End
DataSection
IID_IHTMLDocument2: ; {332c4425-26cb-11d0-b483-00c04fd90119}
Data.l $332C4425
Data.w $26CB, $11D0
Data.b $B4, $83, $00, $C0, $4F, $D9, $01, $19
IID_IOleCommandTarget: ; {b722bccb-4e68-101b-a2bc-00aa00404770}
Data.l $B722BCCB
Data.w $4E68, $101B
Data.b $A2, $BC, $00, $AA, $00, $40, $47, $70
CGID_MSHTML: ; { 0xDE4BA900, 0x59CA, 0x11CF, { 0x95, 0x92, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 } }
Data.l $DE4BA900
Data.w $59CA, $11CF
Data.b $95, $92, $44, $45, $53, $54, $00, $00
EndDataSection