Travaux avec Scintilla

Programmation d'applications complexes
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Travaux avec Scintilla

Message par Progi1984 »

Je préfère lancer un nouveau sujet sur Scintilla afin de montrer mes travaux faits avec Scintilla. Toute personne intéressée peut ajouter son code et ses découvertes, afin de rendre plus accessible cette DLL trés utile et moteur du prochaine IDE de PureBasic.

Liste des constantes, structures, et globales utiles pour l'utilisation de cette DLL

Code : Tout sélectionner

#SCLEX_CONTAINER        = 0
#INVALID_POSITION       = -1
#SCI_START              = 2000
#SCI_OPTIONAL_START     = 3000
#SCI_LEXER_START        = 4000
#SCI_ADDTEXT            = 2001
#SCI_ADDSTYLEDTEXT      = 2002
#SCI_INSERTTEXT         = 2003
#SCI_CLEARALL           = 2004
#SCI_CLEARDOCUMENTSTYLE = 2005
#SCI_GETLENGTH          = 2006
#SCI_GETCHARAT          = 2007
#SCI_GETCURRENTPOS      = 2008
#SCI_GETANCHOR          = 2009
#SCI_GETSTYLEAT         = 2010
#SCI_REDO               = 2011
#SCI_SETUNDOCOLLECTION  = 2012
#SCI_SELECTALL          = 2013
#SCI_SETSAVEPOINT       = 2014
#SCI_GETSTYLEDTEXT      = 2015
#SCI_CANREDO            = 2016
#SCI_MARKERLINEFROMHANDLE=2017
#SCI_MARKERDELETEHANDLE = 2018
#SCI_GETUNDOCOLLECTION  = 2019
#SCWS_INVISIBLE         = 0
#SCWS_VISIBLEALWAYS     = 1
#SCWS_VISIBLEAFTERINDENT= 2
#SCI_GETVIEWWS          = 2020
#SCI_SETVIEWWS          = 2021
#SCI_POSITIONFROMPOINT  = 2022
#SCI_POSITIONFROMPOINTCLOSE=2023
#SCI_GOTOLINE           = 2024
#SCI_GOTOPOS            = 2025
#SCI_SETANCHOR          = 2026
#SCI_GETCURLINE         = 2027
#SCI_GETENDSTYLED       = 2028
#SC_EOL_CRLF            = 0
#SC_EOL_CR              = 1
#SC_EOL_LF              = 2
#SCI_CONVERTEOLS        = 2029
#SCI_GETEOLMODE         = 2030
#SCI_SETEOLMODE         = 2031
#SCI_STARTSTYLING       = 2032
#SCI_SETSTYLING         = 2033
#SCI_GETBUFFEREDDRAW    = 2034
#SCI_SETBUFFEREDDRAW    = 2035
#SCI_SETTABWIDTH        = 2036
#SCI_GETTABWIDTH        = 2121
#SC_CP_UTF8             = 65001
#SC_CP_DBCS             = 1
#SCI_SETCODEPAGE        = 2037
#SCI_SETUSEPALETTE      = 2039
#MARKER_MAX             = 31
#SC_MARK_CIRCLE         = 0
#SC_MARK_ROUNDRECT      = 1
#SC_MARK_ARROW          = 2
#SC_MARK_SMALLRECT      = 3
#SC_MARK_SHORTARROW     = 4
#SC_MARK_EMPTY          = 5
#SC_MARK_ARROWDOWN      = 6
#SC_MARK_MINUS          = 7
#SC_MARK_PLUS           = 8
#SC_MARK_VLINE          = 9
#SC_MARK_LCORNER        = 10
#SC_MARK_TCORNER        = 11
#SC_MARK_BOXPLUS        = 12
#SC_MARK_BOXPLUSCONNECTED=13
#SC_MARK_BOXMINUS       = 14
#SC_MARK_BOXMINUSCONNECTED=15
#SC_MARK_LCORNERCURVE   = 16
#SC_MARK_TCORNERCURVE   = 17
#SC_MARK_CIRCLEPLUS     = 18
#SC_MARK_CIRCLEPLUSCONNECTED=19
#SC_MARK_CIRCLEMINUS    = 20
#SC_MARK_CIRCLEMINUSCONNECTED=21
#SC_MARK_BACKGROUND     = 22
#SC_MARK_DOTDOTDOT      = 23
#SC_MARK_ARROWS         = 24
#SC_MARK_PIXMAP         = 25
#SC_MARK_CHARACTER      = 10000
#SC_MARKNUM_FOLDEREND   = 25
#SC_MARKNUM_FOLDEROPENMID=26
#SC_MARKNUM_FOLDERMIDTAIL=27
#SC_MARKNUM_FOLDERTAIL  = 28
#SC_MARKNUM_FOLDERSUB   = 29
#SC_MARKNUM_FOLDER      = 30
#SC_MARKNUM_FOLDEROPEN  = 31
#SC_MASK_FOLDERS        = $FE000000
#SCI_MARKERDEFINE       = 2040
#SCI_MARKERSETFORE      = 2041
#SCI_MARKERSETBACK      = 2042
#SCI_MARKERADD          = 2043
#SCI_MARKERDELETE       = 2044
#SCI_MARKERDELETEALL    = 2045
#SCI_MARKERGET          = 2046
#SCI_MARKERNEXT         = 2047
#SCI_MARKERPREVIOUS     = 2048
#SCI_MARKERDEFINEPIXMAP = 2049
#SC_MARGIN_SYMBOL       = 0
#SC_MARGIN_NUMBER       = 1
#SCI_SETMARGINTYPEN     = 2240
#SCI_GETMARGINTYPEN     = 2241
#SCI_SETMARGINWIDTHN    = 2242
#SCI_GETMARGINWIDTHN    = 2243
#SCI_SETMARGINMASKN     = 2244
#SCI_GETMARGINMASKN     = 2245
#SCI_SETMARGINSENSITIVEN= 2246
#SCI_GETMARGINSENSITIVEN= 2247
#STYLE_DEFAULT          = 32
#STYLE_LINENUMBER       = 33
#STYLE_BRACELIGHT       = 34
#STYLE_BRACEBAD         = 35
#STYLE_CONTROLCHAR      = 36
#STYLE_INDENTGUIDE      = 37
#STYLE_LASTPREDEFINED   = 39
#STYLE_MAX              = 127
#SC_CHARSET_ANSI        = 0
#SC_CHARSET_DEFAULT     = 1
#SC_CHARSET_BALTIC      = 186
#SC_CHARSET_CHINESEBIG5 = 136
#SC_CHARSET_EASTEUROPE  = 238
#SC_CHARSET_GB2312      = 134
#SC_CHARSET_GREEK       = 161
#SC_CHARSET_HANGUL      = 129
#SC_CHARSET_MAC         = 77
#SC_CHARSET_OEM         = 255
#SC_CHARSET_RUSSIAN     = 204
#SC_CHARSET_SHIFTJIS    = 128
#SC_CHARSET_SYMBOL      = 2
#SC_CHARSET_TURKISH     = 162
#SC_CHARSET_JOHAB       = 130
#SC_CHARSET_HEBREW      = 177
#SC_CHARSET_ARABIC      = 178
#SC_CHARSET_VIETNAMESE  = 163
#SC_CHARSET_THAI        = 222
#SCI_STYLECLEARALL      = 2050
#SCI_STYLESETFORE       = 2051
#SCI_STYLESETBACK       = 2052
#SCI_STYLESETBOLD       = 2053
#SCI_STYLESETITALIC     = 2054
#SCI_STYLESETSIZE       = 2055
#SCI_STYLESETFONT       = 2056
#SCI_STYLESETEOLFILLED  = 2057
#SCI_STYLERESETDEFAULT  = 2058
#SCI_STYLESETUNDERLINE  = 2059
#SC_CASE_MIXED          = 0
#SC_CASE_UPPER          = 1
#SC_CASE_LOWER          = 2
#SCI_STYLESETCASE       = 2060
#SCI_STYLESETCHARACTERSET=2066
#SCI_STYLESETHOTSPOT    = 2409
#SCI_SETSELFORE         = 2067
#SCI_SETSELBACK         = 2068
#SCI_SETCARETFORE       = 2069
#SCI_ASSIGNCMDKEY       = 2070
#SCI_CLEARCMDKEY        = 2071
#SCI_CLEARALLCMDKEYS    = 2072
#SCI_SETSTYLINGEX       = 2073
#SCI_STYLESETVISIBLE    = 2074
#SCI_GETCARETPERIOD     = 2075
#SCI_SETCARETPERIOD     = 2076
#SCI_SETWORDCHARS       = 2077
#SCI_BEGINUNDOACTION    = 2078
#SCI_ENDUNDOACTION      = 2079
#INDIC_MAX              = 7
#INDIC_PLAIN            = 0
#INDIC_SQUIGGLE         = 1
#INDIC_TT               = 2
#INDIC_DIAGONAL         = 3
#INDIC_STRIKE           = 4
#INDIC0_MASK            = $20
#INDIC1_MASK            = $40
#INDIC2_MASK            = $80
#INDICS_MASK            = $E0
#SCI_INDICSETSTYLE      = 2080
#SCI_INDICGETSTYLE      = 2081
#SCI_INDICSETFORE       = 2082
#SCI_INDICGETFORE       = 2083
#SCI_SETWHITESPACEFORE  = 2084
#SCI_SETWHITESPACEBACK  = 2085
#SCI_SETSTYLEBITS       = 2090
#SCI_GETSTYLEBITS       = 2091
#SCI_SETLINESTATE       = 2092
#SCI_GETLINESTATE       = 2093
#SCI_GETMAXLINESTATE    = 2094
#SCI_GETCARETLINEVISIBLE= 2095
#SCI_SETCARETLINEVISIBLE= 2096
#SCI_GETCARETLINEBACK   = 2097
#SCI_SETCARETLINEBACK   = 2098
#SCI_STYLESETCHANGEABLE = 2099
#SCI_AUTOCSHOW          = 2100
#SCI_AUTOCCANCEL        = 2101
#SCI_AUTOCACTIVE        = 2102
#SCI_AUTOCPOSSTART      = 2103
#SCI_AUTOCCOMPLETE      = 2104
#SCI_AUTOCSTOPS         = 2105
#SCI_AUTOCSETSEPARATOR  = 2106
#SCI_AUTOCGETSEPARATOR  = 2107
#SCI_AUTOCSELECT        = 2108
#SCI_AUTOCSETCANCELATSTART=2110
#SCI_AUTOCGETCANCELATSTART=2111
#SCI_AUTOCSETFILLUPS    = 2112
#SCI_AUTOCSETCHOOSESINGLE=2113
#SCI_AUTOCGETCHOOSESINGLE=2114
#SCI_AUTOCSETIGNORECASE = 2115
#SCI_AUTOCGETIGNORECASE = 2116
#SCI_USERLISTSHOW       = 2117
#SCI_AUTOCSETAUTOHIDE   = 2118
#SCI_AUTOCGETAUTOHIDE   = 2119
#SCI_AUTOCSETDROPRESTOFWORD=2270
#SCI_AUTOCGETDROPRESTOFWORD=2271
#SCI_REGISTERIMAGE      = 2405
#SCI_CLEARREGISTEREDIMAGES=2408
#SCI_AUTOCGETTYPESEPARATOR=2285
#SCI_AUTOCSETTYPESEPARATOR=2286
#SCI_SETINDENT          = 2122
#SCI_GETINDENT          = 2123
#SCI_SETUSETABS         = 2124
#SCI_GETUSETABS         = 2125
#SCI_SETLINEINDENTATION = 2126
#SCI_GETLINEINDENTATION = 2127
#SCI_GETLINEINDENTPOSITION=2128
#SCI_GETCOLUMN          = 2129
#SCI_SETHSCROLLBAR      = 2130
#SCI_GETHSCROLLBAR      = 2131
#SCI_SETINDENTATIONGUIDES=2132
#SCI_GETINDENTATIONGUIDES=2133
#SCI_SETHIGHLIGHTGUIDE  = 2134
#SCI_GETHIGHLIGHTGUIDE  = 2135
#SCI_GETLINEENDPOSITION = 2136
#SCI_GETCODEPAGE        = 2137
#SCI_GETCARETFORE       = 2138
#SCI_GETUSEPALETTE      = 2139
#SCI_GETREADONLY        = 2140
#SCI_SETCURRENTPOS      = 2141
#SCI_SETSELECTIONSTART  = 2142
#SCI_GETSELECTIONSTART  = 2143
#SCI_SETSELECTIONEND    = 2144
#SCI_GETSELECTIONEND    = 2145
#SCI_SETPRINTMAGNIFICATION=2146
#SCI_GETPRINTMAGNIFICATION=2147
#SC_PRINT_NORMAL        = 0
#SC_PRINT_INVERTLIGHT   = 1
#SC_PRINT_BLACKONWHITE  = 2
#SC_PRINT_COLOURONWHITE = 3
#SC_PRINT_COLOURONWHITEDEFAULTBG=4
#SCI_SETPRINTCOLOURMODE = 2148
#SCI_GETPRINTCOLOURMODE = 2149
#SCFIND_WHOLEWORD       = 2
#SCFIND_MATCHCASE       = 4
#SCFIND_WORDSTART       = $00100000
#SCFIND_REGEXP          = $00200000
#SCFIND_POSIX           = $00400000
#SCI_FINDTEXT           = 2150
#SCI_FORMATRANGE        = 2151
#SCI_GETFIRSTVISIBLELINE= 2152
#SCI_GETLINE            = 2153
#SCI_GETLINECOUNT       = 2154
#SCI_SETMARGINLEFT      = 2155
#SCI_GETMARGINLEFT      = 2156
#SCI_SETMARGINRIGHT     = 2157
#SCI_GETMARGINRIGHT     = 2158
#SCI_GETMODIFY          = 2159
#SCI_SETSEL             = 2160
#SCI_GETSELTEXT         = 2161
#SCI_GETTEXTRANGE       = 2162
#SCI_HIDESELECTION      = 2163
#SCI_POINTXFROMPOSITION = 2164
#SCI_POINTYFROMPOSITION = 2165
#SCI_LINEFROMPOSITION   = 2166
#SCI_POSITIONFROMLINE   = 2167
#SCI_LINESCROLL         = 2168
#SCI_SCROLLCARET        = 2169
#SCI_REPLACESEL         = 2170
#SCI_SETREADONLY        = 2171
#SCI_NULL               = 2172
#SCI_CANPASTE           = 2173
#SCI_CANUNDO            = 2174
#SCI_EMPTYUNDOBUFFER    = 2175
#SCI_UNDO               = 2176
#SCI_CUT                = 2177
#SCI_COPY               = 2178
#SCI_PASTE              = 2179
#SCI_CLEAR              = 2180
#SCI_SETTEXT            = 2181
#SCI_GETTEXT            = 2182
#SCI_GETTEXTLENGTH      = 2183
#SCI_GETDIRECTFUNCTION  = 2184
#SCI_GETDIRECTPOINTER   = 2185
#SCI_SETOVERTYPE        = 2186
#SCI_GETOVERTYPE        = 2187
#SCI_SETCARETWIDTH      = 2188
#SCI_GETCARETWIDTH      = 2189
#SCI_SETTARGETSTART     = 2190
#SCI_GETTARGETSTART     = 2191
#SCI_SETTARGETEND       = 2192
#SCI_GETTARGETEND       = 2193
#SCI_REPLACETARGET      = 2194
#SCI_REPLACETARGETRE    = 2195
#SCI_SEARCHINTARGET     = 2197
#SCI_SETSEARCHFLAGS     = 2198
#SCI_GETSEARCHFLAGS     = 2199
#SCI_CALLTIPSHOW        = 2200
#SCI_CALLTIPCANCEL      = 2201
#SCI_CALLTIPACTIVE      = 2202
#SCI_CALLTIPPOSSTART    = 2203
#SCI_CALLTIPSETHLT      = 2204
#SCI_CALLTIPSETBACK     = 2205
#SCI_CALLTIPSETFORE     = 2206
#SCI_CALLTIPSETFOREHLT  = 2207
#SCI_VISIBLEFROMDOCLINE = 2220
#SCI_DOCLINEFROMVISIBLE = 2221
#SC_FOLDLEVELBASE       = $400
#SC_FOLDLEVELWHITEFLAG  = $1000
#SC_FOLDLEVELHEADERFLAG = $2000
#SC_FOLDLEVELBOXHEADERFLAG=$4000
#SC_FOLDLEVELBOXFOOTERFLAG=$8000
#SC_FOLDLEVELCONTRACTED = $10000
#SC_FOLDLEVELUNINDENT   = $20000
#SC_FOLDLEVELNUMBERMASK = $0FFF
#SCI_SETFOLDLEVEL       = 2222
#SCI_GETFOLDLEVEL       = 2223
#SCI_GETLASTCHILD       = 2224
#SCI_GETFOLDPARENT      = 2225
#SCI_SHOWLINES          = 2226
#SCI_HIDELINES          = 2227
#SCI_GETLINEVISIBLE     = 2228
#SCI_SETFOLDEXPANDED    = 2229
#SCI_GETFOLDEXPANDED    = 2230
#SCI_TOGGLEFOLD         = 2231
#SCI_ENSUREVISIBLE      = 2232
#SC_FOLDFLAG_LINEBEFORE_EXPANDED=$0002
#SC_FOLDFLAG_LINEBEFORE_CONTRACTED=$0004
#SC_FOLDFLAG_LINEAFTER_EXPANDED=$0008
#SC_FOLDFLAG_LINEAFTER_CONTRACTED=$0010
#SC_FOLDFLAG_LEVELNUMBERS=$0040
#SC_FOLDFLAG_BOX        = $0001
#SCI_SETFOLDFLAGS       = 2233
#SCI_ENSUREVISIBLEENFORCEPOLICY=2234
#SCI_SETTABINDENTS      = 2260
#SCI_GETTABINDENTS      = 2261
#SCI_SETBACKSPACEUNINDENTS=2262
#SCI_GETBACKSPACEUNINDENTS=2263
#SC_TIME_FOREVER        = 10000000
#SCI_SETMOUSEDWELLTIME  = 2264
#SCI_GETMOUSEDWELLTIME  = 2265
#SCI_WORDSTARTPOSITION  = 2266
#SCI_WORDENDPOSITION    = 2267
#SC_WRAP_NONE           = 0
#SC_WRAP_WORD           = 1
#SCI_SETWRAPMODE        = 2268
#SCI_GETWRAPMODE        = 2269
#SC_CACHE_NONE          = 0
#SC_CACHE_CARET         = 1
#SC_CACHE_PAGE          = 2
#SC_CACHE_DOCUMENT      = 3
#SCI_SETLAYOUTCACHE     = 2272
#SCI_GETLAYOUTCACHE     = 2273
#SCI_SETSCROLLWIDTH     = 2274
#SCI_GETSCROLLWIDTH     = 2275
#SCI_TEXTWIDTH          = 2276
#SCI_SETENDATLASTLINE   = 2277
#SCI_GETENDATLASTLINE   = 2278
#SCI_TEXTHEIGHT         = 2279
#SCI_SETVSCROLLBAR      = 2280
#SCI_GETVSCROLLBAR      = 2281
#SCI_APPENDTEXT         = 2282
#SCI_GETTWOPHASEDRAW    = 2283
#SCI_SETTWOPHASEDRAW    = 2284
#SCI_TARGETFROMSELECTION= 2287
#SCI_LINESJOIN          = 2288
#SCI_LINESSPLIT         = 2289
#SCI_SETFOLDMARGINCOLOUR= 2290
#SCI_SETFOLDMARGINHICOLOUR=2291
#SCI_LINEDOWN           = 2300
#SCI_LINEDOWNEXTEND     = 2301
#SCI_LINEUP             = 2302
#SCI_LINEUPEXTEND       = 2303
#SCI_CHARLEFT           = 2304
#SCI_CHARLEFTEXTEND     = 2305
#SCI_CHARRIGHT          = 2306
#SCI_CHARRIGHTEXTEND    = 2307
#SCI_WORDLEFT           = 2308
#SCI_WORDLEFTEXTEND     = 2309
#SCI_WORDRIGHT          = 2310
#SCI_WORDRIGHTEXTEND    = 2311
#SCI_HOME               = 2312
#SCI_HOMEEXTEND         = 2313
#SCI_LINEEND            = 2314
#SCI_LINEENDEXTEND      = 2315
#SCI_DOCUMENTSTART      = 2316
#SCI_DOCUMENTSTARTEXTEND= 2317
#SCI_DOCUMENTEND        = 2318
#SCI_DOCUMENTENDEXTEND  = 2319
#SCI_PAGEUP             = 2320
#SCI_PAGEUPEXTEND       = 2321
#SCI_PAGEDOWN           = 2322
#SCI_PAGEDOWNEXTEND     = 2323
#SCI_EDITTOGGLEOVERTYPE = 2324
#SCI_CANCEL             = 2325
#SCI_DELETEBACK         = 2326
#SCI_TAB                = 2327
#SCI_BACKTAB            = 2328
#SCI_NEWLINE            = 2329
#SCI_FORMFEED           = 2330
#SCI_VCHOME             = 2331
#SCI_VCHOMEEXTEND       = 2332
#SCI_ZOOMIN             = 2333
#SCI_ZOOMOUT            = 2334
#SCI_DELWORDLEFT        = 2335
#SCI_DELWORDRIGHT       = 2336
#SCI_LINECUT            = 2337
#SCI_LINEDELETE         = 2338
#SCI_LINETRANSPOSE      = 2339
#SCI_LINEDUPLICATE      = 2404
#SCI_LOWERCASE          = 2340
#SCI_UPPERCASE          = 2341
#SCI_LINESCROLLDOWN     = 2342
#SCI_LINESCROLLUP       = 2343
#SCI_DELETEBACKNOTLINE  = 2344
#SCI_HOMEDISPLAY        = 2345
#SCI_HOMEDISPLAYEXTEND  = 2346
#SCI_LINEENDDISPLAY     = 2347
#SCI_LINEENDDISPLAYEXTEND=2348
#SCI_HOMEWRAP           = 2349
#SCI_HOMEWRAPEXTEND     = 2450
#SCI_LINEENDWRAP        = 2451
#SCI_LINEENDWRAPEXTEND  = 2452
#SCI_VCHOMEWRAP         = 2453
#SCI_VCHOMEWRAPEXTEND   = 2454
#SCI_MOVECARETINSIDEVIEW= 2401
#SCI_LINELENGTH         = 2350
#SCI_BRACEHIGHLIGHT     = 2351
#SCI_BRACEBADLIGHT      = 2352
#SCI_BRACEMATCH         = 2353
#SCI_GETVIEWEOL         = 2355
#SCI_SETVIEWEOL         = 2356
#SCI_GETDOCPOINTER      = 2357
#SCI_SETDOCPOINTER      = 2358
#SCI_SETMODEVENTMASK    = 2359
#EDGE_NONE              = 0
#EDGE_LINE              = 1
#EDGE_BACKGROUND        = 2
#SCI_GETEDGECOLUMN      = 2360
#SCI_SETEDGECOLUMN      = 2361
#SCI_GETEDGEMODE        = 2362
#SCI_SETEDGEMODE        = 2363
#SCI_GETEDGECOLOUR      = 2364
#SCI_SETEDGECOLOUR      = 2365
#SCI_SEARCHANCHOR       = 2366
#SCI_SEARCHNEXT         = 2367
#SCI_SEARCHPREV         = 2368
#SCI_LINESONSCREEN      = 2370
#SCI_USEPOPUP           = 2371
#SCI_SELECTIONISRECTANGLE=2372
#SCI_SETZOOM            = 2373
#SCI_GETZOOM            = 2374
#SCI_CREATEDOCUMENT     = 2375
#SCI_ADDREFDOCUMENT     = 2376
#SCI_RELEASEDOCUMENT    = 2377
#SCI_GETMODEVENTMASK    = 2378
#SCI_SETFOCUS           = 2380
#SCI_GETFOCUS           = 2381
#SCI_SETSTATUS          = 2382
#SCI_GETSTATUS          = 2383
#SCI_SETMOUSEDOWNCAPTURES=2384
#SCI_GETMOUSEDOWNCAPTURES=2385
#SC_CURSORNORMAL        = -1
#SC_CURSORWAIT          = 4
#SCI_SETCURSOR          = 2386
#SCI_GETCURSOR          = 2387
#SCI_SETCONTROLCHARSYMBOL=2388
#SCI_GETCONTROLCHARSYMBOL=2389
#SCI_WORDPARTLEFT       = 2390
#SCI_WORDPARTLEFTEXTEND = 2391
#SCI_WORDPARTRIGHT      = 2392
#SCI_WORDPARTRIGHTEXTEND= 2393
#VISIBLE_SLOP           = $01
#VISIBLE_STRICT         = $04
#SCI_SETVISIBLEPOLICY   = 2394
#SCI_DELLINELEFT        = 2395
#SCI_DELLINERIGHT       = 2396
#SCI_SETXOFFSET         = 2397
#SCI_GETXOFFSET         = 2398
#SCI_CHOOSECARETX       = 2399
#SCI_GRABFOCUS          = 2400
#CARET_SLOP             = $01
#CARET_STRICT           = $04
#CARET_JUMPS            = $10
#CARET_EVEN             = $08
#SCI_SETXCARETPOLICY    = 2402
#SCI_SETYCARETPOLICY    = 2403
#SCI_SETPRINTWRAPMODE   = 2406
#SCI_GETPRINTWRAPMODE   = 2407
#SCI_SETHOTSPOTACTIVEFORE=2410
#SCI_SETHOTSPOTACTIVEBACK=2411
#SCI_SETHOTSPOTACTIVEUNDERLINE=2412
#SCI_PARADOWN           = 2413
#SCI_PARADOWNEXTEND     = 2414
#SCI_PARAUP             = 2415
#SCI_PARAUPEXTEND       = 2416
#SCI_STARTRECORD        = 3001
#SCI_STOPRECORD         = 3002
#SCI_SETLEXER           = 4001
#SCI_GETLEXER           = 4002
#SCI_COLOURISE          = 4003
#SCI_SETPROPERTY        = 4004
#SCI_SETKEYWORDS        = 4005
#SCI_SETLEXERLANGUAGE   = 4006
#SCI_LOADLEXERLIBRARY   = 4007
#SC_MOD_INSERTTEXT      = $1
#SC_MOD_DELETETEXT      = $2
#SC_MOD_CHANGESTYLE     = $4
#SC_MOD_CHANGEFOLD      = $8
#SC_PERFORMED_USER      = $10
#SC_PERFORMED_UNDO      = $20
#SC_PERFORMED_REDO      = $40
#SC_LASTSTEPINUNDOREDO  = $100
#SC_MOD_CHANGEMARKER    = $200
#SC_MOD_BEFOREINSERT    = $400
#SC_MOD_BEFOREDELETE    = $800
#SC_MODEVENTMASKALL     = $F77
#SCEN_CHANGE            = 768
#SCEN_SETFOCUS          = 512
#SCEN_KILLFOCUS         = 256
#SCK_DOWN               = 300
#SCK_UP                 = 301
#SCK_LEFT               = 302
#SCK_RIGHT              = 303
#SCK_HOME               = 304
#SCK_END                = 305
#SCK_PRIOR              = 306
#SCK_NEXT               = 307
#SCK_DELETE             = 308
#SCK_INSERT             = 309
#SCK_ESCAPE             = 7 
#SCK_BACK               = 8
#SCK_TAB                = 9
#SCK_RETURN             = 13
#SCK_ADD                = 310
#SCK_SUBTRACT           = 311
#SCK_DIVIDE             = 312
#SCMOD_NORM             = 0
#SCMOD_SHIFT            = 1
#SCMOD_CTRL             = 2
#SCMOD_ALT              = 4
#SCMOD_ASHIFT           = #SCMOD_SHIFT|#SCMOD_ALT
#SCMOD_CSHIFT           = #SCMOD_SHIFT|#SCMOD_CTRL
#SCN_STYLENEEDED        = 2000
#SCN_CHARADDED          = 2001
#SCN_SAVEPOINTREACHED   = 2002
#SCN_SAVEPOINTLEFT      = 2003
#SCN_MODIFYATTEMPTRO    = 2004
;#SCN_KEY                = 2005 Linux only!
#SCN_DOUBLECLICK        = 2006
#SCN_UPDATEUI           = 2007
#SCN_MODIFIED           = 2008
#SCN_MACRORECORD        = 2009
#SCN_MARGINCLICK        = 2010
#SCN_NEEDSHOWN          = 2011
#SCN_PAINTED            = 2013
#SCN_USERLISTSELECTION  = 2014
#SCN_URIDROPPED         = 2015
#SCN_DWELLSTART         = 2016
#SCN_DWELLEND           = 2017
#SCN_ZOOM               = 2018
#SCN_HOTSPOTCLICK       = 2019
#SCN_HOTSPOTDOUBLECLICK = 2020
#SCN_CALLTIPCLICK       = 2021
;}

;These structures are defined to be exactly the same shape as the Win32
;CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, And NMHDR structs.
;So older code that treats Scintilla as a RichEdit will work.

Structure CharacterRange
  cpmin.l;
  cpmax.l;
EndStructure
Structure TextToFind
 chrg.CharacterRange
 lpstrText.l
 chrgText.CharacterRange
EndStructure
Structure NotifyHeader
 ;hwndFrom is really an environment specifc window handle Or pointer
 ;but most clients of Scintilla.h do not have This type visible.
 ;WindowID hwndFrom;
 hwndFrom.l
 idFrom.l
 code.l
EndStructure
Structure SCNotification
 NMHDR.NotifyHeader
 position.l;	// SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, SCN_DWELLEND
 ch.l;		// SCN_CHARADDED, SCN_KEY
 modifiers.l;	// SCN_KEY
 modificationType.l;	// SCN_MODIFIED
 text.l;	      // SCN_MODIFIED
 length.l;		// SCN_MODIFIED
 linesAdded.l;    // SCN_MODIFIED
 message.l;	      // SCN_MACRORECORD
 wParam.l;	      // SCN_MACRORECORD
 lParam.l;    	// SCN_MACRORECORD
 line.l;		// SCN_MODIFIED
 foldLevelNow.l;	// SCN_MODIFIED
 foldLevelPrev.l;	// SCN_MODIFIED
 margin.l;		// SCN_MARGINCLICK
 listType.l;	// SCN_USERLISTSELECTION
 x.l;			// SCN_DWELLSTART, SCN_DWELLEND
 y.l;		// SCN_DWELLSTART, SCN_DWELLEND
EndStructure
Structure RangeToFormat
  hdc.l
  hdcTarget.l
  rc.RECT
  rcPage.RECT
  chrg.CharacterRange
EndStructure

;-Global and Dll-Constanten

Global DLL_SciEdit
Global SciEdi_MsgPointer,SciEdi_WndData

;#DLL_SciEdit=#Library_Count_:#Library_Count_=#Library_Count_+1

#Margin_LineNumbers=0
#Margin_Symbols=1
#Margin_Fold=2
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Erix14 a écrit :Si vous voulez utiliser un Lexer contenu dans SciLexer par exemple HTML rajouter ce code

Code : Tout sélectionner

#SCLEX_HTML = 4
#SCI_SETLEXER           = 4001
SendMessage_(hScintilla,#SCI_SETLEXER,#SCLEX_HTML,0)
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Coloration Syntaxique > Choix des différentes couleurs

Code : Tout sélectionner

SendMessage_(hScintilla,#SCI_STYLESETFORE,1,RGB(255,255,0)); commentaires
SendMessage_(hScintilla,#SCI_STYLESETFORE,2,RGB(255,128,64)); entiers
SendMessage_(hScintilla,#SCI_STYLESETFORE,3,RGB(0,0,255)); 
SendMessage_(hScintilla,#SCI_STYLESETFORE,4,RGB(0,128,0)); chaines
SendMessage_(hScintilla,#SCI_STYLESETFORE,5,RGB(128,128,128)); 
SendMessage_(hScintilla,#SCI_STYLESETFORE,6,RGB(0,128,128));opérateurs +-*/=()
SendMessage_(hScintilla,#SCI_STYLESETFORE,7,RGB(128,128,0));
SendMessage_(hScintilla,#SCI_STYLESETFORE,8,RGB(64,64,64));
SendMessage_(hScintilla,#SCI_STYLESETFORE,9,RGB(0,128,64));
SendMessage_(hScintilla,#SCI_STYLESETFORE,10,RGB(0,64,0));
SendMessage_(hScintilla,#SCI_STYLESETFORE,11,RGB(64,128,0));
SendMessage_(hScintilla,#SCI_STYLESETFORE,12,RGB(64,64,0));
SendMessage_(hScintilla,#SCI_STYLESETFORE,13,RGB(0,64,64));constantes
SendMessage_(hScintilla,#SCI_STYLESETFORE,14,RGB(128,64,0));
SendMessage_(hScintilla,#SCI_STYLESETFORE,15,RGB(128,64,64)); 
SendMessage_(hScintilla,#SCI_STYLESETFORE,16,RGB(0,64,128));
SendMessage_(hScintilla,#SCI_STYLESETFORE,17,RGB(64,0,128)); hexadécimal
SendMessage_(hScintilla,#SCI_STYLESETFORE,18,RGB(128,0,128)); binaire
Désolé, j'ai pas encore trouvé toutes les correspondances !
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Faudrait créer un fichier resident ainsi qu'une lib.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Folding+Indentation de ligne+Coloration au choix de l'utilisateur

Code posté par Erix14 et commenté par moi-même :

Code : Tout sélectionner

Global hLib,hwnd,Brosse,hScintilla

Procedure WindowCallback(WindowId, message, wParam, lParam)
     Result = #PB_ProcessPureBasicEvents
     Select message
      Case #wm_notify
               *msg.SCNotification=lParam
               If *msg\NMHDR\hwndFrom = hScintilla
                    Select *msg\NMHDR\code
                         Case #SCN_MARGINCLICK
                              If *msg\margin=1
                     Ligne = SendMessage_(hScintilla,#SCI_LINEFROMPOSITION,*msg\position,0)
                     Marker = SendMessage_(hScintilla,#SCI_MARKERGET,Ligne,0)
                     Debug Marker
                     If Marker & 1
                                        SendMessage_(hScintilla,#SCI_SETFOLDEXPANDED,0,1)
                                        SendMessage_(hScintilla,#SCI_MARKERDELETE,Ligne,0)
                                        SendMessage_(hScintilla,#SCI_MARKERADD,Ligne,1)
                                        SendMessage_(hScintilla,#SCI_SHOWLINES,1,6)
                                   ElseIf Marker & 2
                                        SendMessage_(hScintilla,#SCI_SETFOLDEXPANDED,0,1)
                                        SendMessage_(hScintilla,#SCI_MARKERDELETE,Ligne,1)
                                        SendMessage_(hScintilla,#SCI_MARKERADD,Ligne,0)
                                        SendMessage_(hScintilla,#SCI_HIDELINES,1,6)
                                   EndIf
                              EndIf
                    EndSelect
               EndIf
     EndSelect
     ProcedureReturn Result
EndProcedure

hLib = OpenLibrary(1,"SciLexer.dll")
hwnd = OpenWindow(0,0,0,600,400,#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Invisible,"Scintilla")
SetWindowCallback(@WindowCallback())
If hLib
     hInstance = GetModuleHandle_(0)
     hScintilla = CreateWindowEx_(0, "Scintilla"," ", #WS_CHILD|#WS_VISIBLE|#WS_TABSTOP,10,10,580,380,hwnd,0,hInstance,0)
Else
     MessageRequester( "Erreur Scintilla", "La DLL n'est pas chargé.", #MB_OK | #MB_ICONERROR)
     End
EndIf
Brosse = CreateSolidBrush_(RGB(55, 82, 55))
SetClassLong_(WindowID(0), #GCL_HBRBackGround, Brosse)
 SendMessage_(hScintilla,#SCI_STYLESETFONT,#STYLE_DEFAULT,"Verdana"); police par défaut
 SendMessage_(hScintilla,#SCI_STYLESETSIZE,#STYLE_DEFAULT,12) ;taille par défaut
 SendMessage_(hScintilla,#SCI_STYLESETFORE,#STYLE_DEFAULT,RGB(250,250,250)) ; couleur de la police
 SendMessage_(hScintilla,#SCI_STYLESETBACK,#STYLE_DEFAULT,RGB(40,40,80)) ; couleur du fond
 SendMessage_(hScintilla,#SCI_STYLECLEARALL,0,0);
 SendMessage_(hScintilla,#SCI_STYLESETFORE,1,RGB(0,250,0)); définti une liste de couleur comme en rtf
 SendMessage_(hScintilla,#SCI_STYLESETFORE,2,RGB(0,250,250));
 SendMessage_(hScintilla,#SCI_STYLESETFORE,3,RGB(250,250,0));
 SendMessage_(hScintilla,#SCI_STYLESETFORE,4,RGB(250,100,0));
 SendMessage_(hScintilla,#SCI_STYLESETBACK,#STYLE_LINENUMBER,RGB(80,80,160)) ; fond
 SendMessage_(hScintilla,#SCI_STYLESETFORE,#STYLE_LINENUMBER,RGB(250,250,250)); écriture
 SendMessage_(hScintilla,#SCI_SETMARGINWIDTHN,0,30);  Affiche les numero des lignes
 SendMessage_(hScintilla,#SCI_SETSELBACK,#True,RGB(0,100,150)); Détermine la couleur de fond de la sélection
 SendMessage_(hScintilla,#SCI_SETSELFORE,#False,0); La couleur du texte sélectionné est inchangée
 SendMessage_(hScintilla,#SCI_SETCARETFORE,RGB(250,200,100),0); Couleur du curseur
 SendMessage_(hScintilla,#SCI_SETCARETWIDTH,2,0); Largeur du curseur
 SendMessage_(hScintilla,#SCI_SETINDENTATIONGUIDES,#True,0) ; Affiche le guide d'indentation
 SendMessage_(hScintilla,#SCI_SETINDENT,8,0) ; Détermine la longueur de la tabulation

Texte$ = "Ouvre le PLIAGE pour voir ma REPONSE..."+Chr(13)
Texte$ + "Je ne vois pas en quoi s'est"+Chr(13)
Texte$ + "une blague ?"+Chr(13)
Texte$ + "Si c'est une ruse pour obtenir du code,"+Chr(13)
Texte$ + "elle est de mauvais goût..."+Chr(13)
Texte$ + "Forcer quelqu'un à te donner son code en l'agressant,"+Chr(13)
Texte$ + "ce n'est pas bien... et te fera du tort..."+Chr(13)
Texte$ + "Fin de la REPONSE"

SendMessage_(hScintilla,#SCI_INSERTTEXT,-1,Texte$) ; insère le texte à la fin !
  For t=1 To 6
       SendMessage_(hScintilla,#SCI_SETLINEINDENTATION,t,8) ; indente  le texte de 8 espaces
  Next
 SendMessage_(hScintilla,#SCI_SETLINEINDENTATION,2,16)
 SendMessage_(hScintilla,#SCI_SETLINEINDENTATION,4,16)
 SendMessage_(hScintilla,#SCI_SETLINEINDENTATION,6,16)
 
  SendMessage_(hScintilla,#SCI_STARTSTYLING,9,$FF);x=début de la coloration y=??
  SendMessage_(hScintilla,#SCI_SETSTYLING,8,1) ;x=nombre de caractère y : numéro de couleur dans le dico
  SendMessage_(hScintilla,#SCI_STARTSTYLING,29,$FF)
  SendMessage_(hScintilla,#SCI_SETSTYLING,7,2)
  SendMessage_(hScintilla,#SCI_STARTSTYLING,40,$FF)
  SendMessage_(hScintilla,#SCI_SETSTYLING,213,4)
  SendMessage_(hScintilla,#SCI_STARTSTYLING,266,$FF)
  SendMessage_(hScintilla,#SCI_SETSTYLING,7,4)
 
 SendMessage_(hScintilla,#SCI_SETMARGINSENSITIVEN,1,#True); active le folding
 SendMessage_(hScintilla,#SCI_SETMARGINMASKN,1,~#SC_MASK_FOLDERS);masque la couleur différente du folding
 SendMessage_(hScintilla,#SCI_MARKERDEFINE,0,#SC_MARK_ARROW) ; définit la fleche pour le droite (replié)
 SendMessage_(hScintilla,#SCI_MARKERDEFINE,1,#SC_MARK_ARROWDOWN) ; définti la fleche pour le bas (déplié)
 
 SendMessage_(hScintilla,#SCI_SETFOLDFLAGS,8,1)
 SendMessage_(hScintilla,#SCI_SETFOLDLEVEL,0,#SC_FOLDLEVELHEADERFLAG)
 SendMessage_(hScintilla,#SCI_MARKERADD,0,0) ; ajoute le petit triangle : y0 triangle pointé vers la gauche 1vers le bas
 SendMessage_(hScintilla,#SCI_HIDELINES,1,6); Cacher des lignes : ligne de départ, ombre de lignes
 SendMessage_(hScintilla,#SCI_SETFOLDEXPANDED,1,1); x ? y fait une ligne endessous du folder

HideWindow(0,0)
Repeat
     message = WaitWindowEvent()
     Select  message
          Case #PB_Event_CloseWindow
               DeleteObject_(Brosse)
               End
     EndSelect
ForEver
Pensez à utiliser l'include du départ avec les constantes, globales et structures
Dernière modification par Progi1984 le jeu. 02/juin/2005 20:45, modifié 1 fois.
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Progi1984, tu n'as pas compris l'utilisation de

Code : Tout sélectionner

SendMessage_(hScintilla,#SCI_SETFOLDEXPANDED,Argument 1,Argument 2)
Argument 1 : numéro de la ligne dont on doit afficher la "ligne de pliage", la numérotation des lignes commence à 0.
Argument 2 : 0 la "ligne de pliage" est affichée, 1 la "ligne de pliage" est cachée.
Dans mon exemple que tu as modifié, la "ligne de pliage" n'apparaît plus :(
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Je le modifie de suite, DSL !
tme007
Messages : 57
Inscription : mar. 26/oct./2004 12:34

Scintilla

Message par tme007 »

Comme cela en passant ... japBE installe en standard la dll 'SciLexer.dll' ainsi qu'un wrapper Scintilla (voir 'Project - Include - Scintilla), au niveau fichier il se trouve dans 'Include\Scintilla.pbi'

Toutes les procédures Scintilla sont déjà déclarées dans ce wrapper.

Ceci pourrait éviter de réinventer la roue et toute une série de SendMessage ... mais ce n'est que mon avis.

Bonne soirée !
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

@tme007 on connaît tout ce que tu viens de dire !
Mais personnellement je préfère envoyer directement le message plutôt que de passer par une procédure qui pointe sur une fonction qui envoie le message... Je pense qu'il faut arrêter d'écrire des procédures à tout va !
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Ceci pourrait éviter de réinventer la roue et toute une série de SendMessage
On réinvente rien du tout 8O c'est simplement l'utilisation normale de Scintilla, Neil Hodgson n'a pas fait cette Callback pour rien :

Code : Tout sélectionner

sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
	//Platform::DebugPrintf("S start wnd proc %d %d %d\n",iMessage, wParam, lParam);

	// Optional macro recording hook
	if (recordingMacro)
		NotifyMacroRecord(iMessage, wParam, lParam);

	switch (iMessage) {

	case SCI_GETTEXT: {
			if (lParam == 0)
				return pdoc->Length() + 1;
			if (wParam == 0)
				return 0;
			char *ptr = CharPtrFromSPtr(lParam);
			unsigned int iChar = 0;
			for (; iChar < wParam - 1; iChar++)
				ptr[iChar] = pdoc->CharAt(iChar);
			ptr[iChar] = '\0';
			return iChar;
		}

	case SCI_SETTEXT: {
			if (lParam == 0)
				return 0;
			pdoc->BeginUndoAction();
			pdoc->DeleteChars(0, pdoc->Length());
			SetEmptySelection(0);
			pdoc->InsertString(0, CharPtrFromSPtr(lParam));
			pdoc->EndUndoAction();
			return 1;
		}

	case SCI_GETTEXTLENGTH:
		return pdoc->Length();

	case SCI_CUT:
		Cut();
		SetLastXChosen();
		break;

	case SCI_COPY:
		Copy();
		break;

	case SCI_COPYRANGE:
		CopyRangeToClipboard(wParam, lParam);
		break;

	case SCI_COPYTEXT:
		CopyText(wParam, CharPtrFromSPtr(lParam));
		break;

	case SCI_PASTE:
		Paste();
		if (!caretSticky) {
			SetLastXChosen();
		}
		EnsureCaretVisible();
		break;

	case SCI_CLEAR:
		Clear();
		SetLastXChosen();
		EnsureCaretVisible();
		break;

	case SCI_UNDO:
		Undo();
		SetLastXChosen();
		break;

	case SCI_CANUNDO:
		return pdoc->CanUndo() ? 1 : 0;

	case SCI_EMPTYUNDOBUFFER:
		pdoc->DeleteUndoHistory();
		return 0;

	case SCI_GETFIRSTVISIBLELINE:
		return topLine;

	case SCI_GETLINE: {	// Risk of overwriting the end of the buffer
			int lineStart = pdoc->LineStart(wParam);
			int lineEnd = pdoc->LineStart(wParam + 1);
			if (lParam == 0) {
				return lineEnd - lineStart;
			}
			char *ptr = CharPtrFromSPtr(lParam);
			int iPlace = 0;
			for (int iChar = lineStart; iChar < lineEnd; iChar++) {
				ptr[iPlace++] = pdoc->CharAt(iChar);
			}
			return iPlace;
		}

	case SCI_GETLINECOUNT:
		if (pdoc->LinesTotal() == 0)
			return 1;
		else
			return pdoc->LinesTotal();

	case SCI_GETMODIFY:
		return !pdoc->IsSavePoint();

	case SCI_SETSEL: {
			int nStart = static_cast<int>(wParam);
			int nEnd = static_cast<int>(lParam);
			if (nEnd < 0)
				nEnd = pdoc->Length();
			if (nStart < 0)
				nStart = nEnd; 	// Remove selection
			selType = selStream;
			SetSelection(nEnd, nStart);
			EnsureCaretVisible();
		}
		break;

	case SCI_GETSELTEXT: {
			if (lParam == 0) {
				if (selType == selStream) {
					return 1 + SelectionEnd() - SelectionStart();
				} else {
					// TODO: why is selLines handled the slow way?
					int size = 0;
					int extraCharsPerLine = 0;
					if (selType != selLines)
						extraCharsPerLine = (pdoc->eolMode == SC_EOL_CRLF) ? 2 : 1;
					SelectionLineIterator lineIterator(this);
					while (lineIterator.Iterate()) {
						size += lineIterator.endPos + extraCharsPerLine - lineIterator.startPos;
					}

					return 1 + size;
				}
			}
			SelectionText selectedText;
			CopySelectionRange(&selectedText);
			char *ptr = CharPtrFromSPtr(lParam);
			int iChar = 0;
			if (selectedText.len) {
				for (; iChar < selectedText.len; iChar++)
					ptr[iChar] = selectedText.s[iChar];
			} else {
				ptr[0] = '\0';
			}
			return iChar;
		}

	case SCI_LINEFROMPOSITION:
		if (static_cast<int>(wParam) < 0)
			return 0;
		return pdoc->LineFromPosition(wParam);


                    ...


Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Message par Dräc »

erix14 a écrit :@tme007 on connaît tout ce que tu viens de dire !
Mais personnellement je préfère envoyer directement le message plutôt que de passer par une procédure qui pointe sur une fonction qui envoie le message... Je pense qu'il faut arrêter d'écrire des procédures à tout va !
Je pense que dans le futur, la notion de Macro conciliera les deux points de vu.
Dans l’exemple de jaPBe, on pourra reprendre la série de procédures pour les transformer en macro et supprimer ainsi le premier step (appel de procedure) mais pas le CallFunctionFast().
Cependant, le gros avantage de CallFunctionFast() est sa portablilité à la différence de SendMessage_()
Polo
Messages : 612
Inscription : sam. 03/juil./2004 20:14

Message par Polo »

Dräc a écrit :
erix14 a écrit :@tme007 on connaît tout ce que tu viens de dire !
Mais personnellement je préfère envoyer directement le message plutôt que de passer par une procédure qui pointe sur une fonction qui envoie le message... Je pense qu'il faut arrêter d'écrire des procédures à tout va !
Je pense que dans le futur, la notion de Macro conciliera les deux points de vu.
Dans l’exemple de jaPBe, on pourra reprendre la série de procédures pour les transformer en macro et supprimer ainsi le premier step (appel de procedure) mais pas le CallFunctionFast().
Cependant, le gros avantage de CallFunctionFast() est sa portablilité à la différence de SendMessage_()
Ben, c'est surtout que utiliser CallFunctionFast, d'après l'auteur de Scintilla, est beaucoup plus rapide qu'utiliser SendMessage (c'est marqué dans l'aide, je crois).
Enfin, moi, c'est le truc que je comprend pas, il a créé une super librairie, mais n'a pas inventé de façon simple et efficace pour en utiliser toute les fonctionnalitées...
tme007
Messages : 57
Inscription : mar. 26/oct./2004 12:34

Scintilla

Message par tme007 »

@Erix14:

Un peu chatouilleux me semble-t'il ... :P

Les SendMessage et les procédures ont chacuns leurs avantages et leurs inconvénients, cela dépend des points de vue (et des besoins) ... dans mon cas, j'utilise les uns et les autres selon ce que je développe.

Dans le cas qui nous occupe, puisque le wrapper est dans japBE et que (personnellement) j'utilise japBE, autant l'utiliser.

Il est vrai que parfois, écrire une procédure pour 1 ou 2 lignes n'est pas vraiment utile mais comme dans ce cas-ci, ce n'est pas moi qui l'écrit, je ne vais pas me gêner ... 8O

Ce qui n'empêche pas d'utiliser la callback prévue pour les notifications renvoyées par Scintilla. :wink: Puisque le wrapper ne contient rien pour cela ...

D'autre part, je pense que parfois, présumer de ce que les gens connaissent ou ne connaissent pas est un peu léger ... je me rappelle un poste parlant du 'Code Template Plugin' dans japBE que certains ne connaissaient pas et qui s'avère bien pratique dans de nombreux cas.

La polémique ne servant à rien ... je me relance dans mon développement avec le wrapper Scintilla. :P

A plus tard ...
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Excuse-moi tme007 de t'être paru chatouilleux, mais avoue-le, supposer que quelqu'un s'est lancé dans Scintilla sans avoir vu le code source de jaPBe, c'est un peu vexant...
Surtout que c'est la première chose censée à faire.
Ce qui m'a poussé à utiliser les SendMessage, c'est le faîte d'avoir un code dépourvu de toutes ces procédures à une ligne de code. Et Dräc à raison de parler des macros, ça va vraiment faire du bien pour l'utilisation des librairies.
Ben, c'est surtout que utiliser CallFunctionFast, d'après l'auteur de Scintilla, est beaucoup plus rapide qu'utiliser SendMessage (c'est marqué dans l'aide, je crois).
Je te le confirme les CallFunctionFast sont beaucoup plus rapides (et même de très loin, j'ai fait des tests) :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

@ Erix14 :
dans pureassembleur , il y a un editeur (je pense Japbe modifié)
qui dispose d'un Skin de toute beauté ! :D

pourquoi ne pas proposé ta Modification a l'auteur de Japbe
pour que ,dans le future , on retrouve ce skin dans Japbe ?
:D
Répondre