Web gadget en édition ...ça marche mais comment ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Stefou
Messages : 234
Inscription : jeu. 18/janv./2007 14:08

Web gadget en édition ...ça marche mais comment ?

Message par Stefou »

Salut à tous les accros de la prog 8)

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. :P

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
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

C'est juste cette ligne de code qui permet de passer en édition:
Document\put_designMode("On")

Après pour le reste, quelques fonctions d'interfaces.
Répondre