From: Rod O. <rod...@us...> - 2008-07-18 19:46:05
|
Update of /cvsroot/win32forth/win32forth/src/console In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv26738 Modified Files: CommandWindow.f NewConsole.f Log Message: Rod: Update of files for the New Console Index: NewConsole.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/console/NewConsole.f,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** NewConsole.f 11 Nov 2007 01:01:18 -0000 1.4 --- NewConsole.f 18 Jul 2008 19:46:00 -0000 1.5 *************** *** 1,7 **** \ $Id$ ! \ NewConsole.f Console window to replace w32fConsole.dll ! Needs CommandWindow.f CommandWindow cmd --- 1,10 ---- \ $Id$ ! \ NewConsole.f Console window to replace w32fConsole.dll ! ! Needs src\console\CommandWindow.f ! Needs src\console\ConsoleStatBarNew.f ! cr .( Loading New Console ...) CommandWindow cmd *************** *** 26,29 **** --- 29,43 ---- WindowStyle: super WS_CLIPCHILDREN or + \ WS_VISIBLE or + ;M + + :M Start: ( -- ) \ overriden to start console hidden + hWnd + IF SetFocus: self + ELSE + register-frame-window drop + create-frame-window to hWnd + hWnd to _conhndl + THEN ;M *************** *** 56,78 **** :M MinSize: ( -- width height ) 240 64 ;M ! : ConsoleTitle { \ $buff -- z$ } ! 256 LocalAlloc: $buff ! s" Win32Forth New Console " $buff place base @ decimal ! version# ((version)) $buff +place base ! ! $buff +NULL $buff 1+ ! ; ! ! :M WindowTitle: ( -- z" ) ConsoleTitle ;M :M On_SetFocus: ( h m w l -- ) SetFocus: cmd ;M ! Internal ! External ! : rr Redraw: ConsoleStatusbar ; ! : cl Destroy: ConsoleStatusbar ; ! : ss hWnd create: ConsoleStatusbar GetSize: ConsoleStatusbar nip to StatusbarHeight ; ! Module :M On_Init: ( -- ) --- 70,96 ---- :M MinSize: ( -- width height ) 240 64 ;M ! \ :M WindowTitle: ( -- z" ) z" Win32Forth" ;M ! ! :M WindowTitle: ( -- z" ) ! s" Win32Forth " pad place base @ decimal ! version# ((version)) pad +place base ! ! pad +NULL pad 1+ ! ;M :M On_SetFocus: ( h m w l -- ) SetFocus: cmd ;M ! :M ShowStatusBar: ( -- ) height: ConsoleStatusbar to StatusBarHeight ! SW_SHOW show: ConsoleStatusbar ( true check: hStatusBar ) ! 0 0 Width Height StatusbarHeight - Move: cmd ! ['] Console-Statusbar-interpret is interpret ! ;M ! ! :M HideStatusBar: ( -- ) 0 to StatusBarHeight ! SW_HIDE show: ConsoleStatusbar ( false check: hStatusBar ) ! 0 0 Width Height StatusBarHeight - Move: cmd ! ['] _interpret is interpret ! ;M :M On_Init: ( -- ) *************** *** 82,102 **** COLOR_BTNFACE 1+ GCL_HBRBACKGROUND hWnd Call SetClassLong drop 101 appinst Call LoadIcon GCL_HICON hWnd Call SetClassLong drop ! \ Create: TextFont ! \ self start: ConsoleStatusbar ! cl ss \ for the moment ! \ StatusBarHeight IF ShowStatusBar THEN self start: cmd ;M :M On_Size: ( h m w -- h m w ) dup to WindowState ! 0 0 Width Height StatusBarHeight - Move: cmd ! \ Redraw: ConsoleStatusbar ! rr \ for the moment ;M :M On_Done: ( -- ) WindowState SIZE_RESTORED = IF SaveWindowSettings THEN - \ Delete: TextFont cmd.Text release bye --- 100,122 ---- COLOR_BTNFACE 1+ GCL_HBRBACKGROUND hWnd Call SetClassLong drop 101 appinst Call LoadIcon GCL_HICON hWnd Call SetClassLong drop ! self start: ConsoleStatusbar ! Height: ConsoleStatusbar to StatusbarHeight ! StatusbarHeight IF ShowStatusbar: self THEN self start: cmd + cls: cmd + Console-popup SetPopupBar: cmd ;M :M On_Size: ( h m w -- h m w ) dup to WindowState ! dup SIZE_MINIMIZED <> ! IF ! 0 0 Width Height StatusbarHeight - Move: cmd ! Redraw: ConsoleStatusbar ! THEN ;M :M On_Done: ( -- ) WindowState SIZE_RESTORED = IF SaveWindowSettings THEN cmd.Text release bye *************** *** 107,111 **** \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ! \ \\\\\ Turnkey without needing w32fConsole.dll \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ --- 127,131 ---- \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ! \ \\\\\ Message handling \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ *************** *** 117,127 **** ; - (( : Pause { | pMsg -- } \ instead of "Winpause" - already defined in 6.12 - 7 cells LocalAlloc: pMsg - BEGIN PM_REMOVE 0 0 0 pMsg Call PeekMessage - WHILE pMsg HandleMessages drop - REPEAT - ; )) - : PauseForMessage { | pMsg -- } \ instead of "Winpause" 7 cells LocalAlloc: pMsg --- 137,140 ---- *************** *** 137,166 **** ; - :NoName ( -- ) initialization-chain do-chain default-application ; is default-hello ! : c_type ( a n -- ) AddText: cmd ; : c_emit ( c -- ) sp@ 1 c_type drop ; ! : c_cr ( -- ) crlf$ count c_type ; : c_?cr ( n -- ) CharsNotFit: cmd IF c_cr THEN ; ! \ : c_cls ( -- ) ZeroText: cmd 0 caretX: cmd ptrNull +ztext: cmd paint: cmd updateVscroll: cmd ; ! : c_cls ( -- ) DA: cmd ; : c_getcolrow ( -- col row ) VisibleColRow: cmd ; ! : c_getxy ( -- x y ) LastColRow: cmd ; 0 value entered 0 0 2value EnteredString ! : c_accept ( a1 n1 -- n2 ) SetMaxChars: cmd ! Prompt: cmd ShowCaret: cmd false to entered ! BEGIN WaitForMessage entered UNTIL ! \ BEGIN pause 1 ms entered UNTIL ! EnteredString >r swap r@ move r> ; ! : AcceptCommand ( a n -- ) to EnteredString true to entered ; ' AcceptCommand SetAction: cmd ! : c_pushkey ( c -- ) dup 13 = ! IF drop KeyString: cmd to EnteredString EmptyKeyBuffer: cmd true to entered ! ELSE dup c_emit PutKey: cmd ! THEN ; : c_"pushkeys ( a n -- ) \ push the characters of string a n --- 150,222 ---- ; + \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + \ \\\\\ Text wrapping \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ! Create buffer2 512 allot ! true value WrapText? ! 40 value n1 \ max no. chars that fit on first line ! 20 value w \ max no. chars that fit on subsequent whole lines ! ! : UpToCR ( a n - a n n ) 2dup 13 scan 10 scan 10 skip nip over swap - ; ! : AddToBuffer ( a n - a n ) dup>r buffer2 +place r> /string ; ! : WrapText ( a n -- a n ) ! WrapText? 0= ?exit ! buffer2 4 erase ! UpToCR dup>r n1 ( 2 + ) > ! IF ! r>drop 2dup n1 min AddToBuffer ! crlf$ count buffer2 +place ! ELSE ! 2dup r> min AddToBuffer ! THEN ! BEGIN ! dup ! WHILE ! UpToCR dup>r w ( 2 + ) > ! IF ! r>drop 2dup w min AddToBuffer ! crlf$ count buffer2 +place ! ELSE ! 2dup r> min AddToBuffer ! THEN ! ! REPEAT ! 2drop ! buffer2 count ! buffer2 +null ! ; ! ! : c_type ( a n -- ) ! VisibleCols: cmd dup to w ! cmd.X - to n1 ! WrapText OverwriteTextAtXY: cmd ; ! ! \ : c_type ( a n -- ) OverwriteTextAtXY: cmd ; : c_emit ( c -- ) sp@ 1 c_type drop ; ! : c_cr ( -- ) cr: cmd ; : c_?cr ( n -- ) CharsNotFit: cmd IF c_cr THEN ; ! : c_cls ( -- ) cls: cmd ; : c_getcolrow ( -- col row ) VisibleColRow: cmd ; ! : c_getxy ( -- x y ) GetXY: cmd ; ! : c_gotoxy ( -- x y ) GoToXY: cmd ; ! 0 value entered 0 0 2value EnteredString ! : c_accept ( a1 n1 -- n2 ) ! SetMaxChars: cmd ! Prompt: cmd ! false to entered ! BEGIN GetKey: cmd HandleChar: cmd WaitForMessage entered UNTIL ! EnteredString >r swap r@ move r> ! ; ! : AcceptCommand ( a n -- ) to EnteredString true to entered 0 0 0 0 call PostMessage drop ; ' AcceptCommand SetAction: cmd ! : c_pushkey ( c -- ) \ push into the keyboard buffer, if c > 255 put into VirtualKey where only latest is kept ! dup -256 and IF SetVirtualKey: cmd ELSE PutKey: cmd THEN ! ; : c_"pushkeys ( a n -- ) \ push the characters of string a n *************** *** 171,226 **** : c_key? ( -- f ) KeysOff: cmd ! \ pause KeyBufferEmpty: cmd not ! PauseForMessage KeyBufferEmpty: cmd not ! KeysOn: cmd ; \ pause-seconds and seconds, key files ! : c_key ( -- c ) \ keys from WM_KEYDOWN also ****** use keybuffer??? EKEY??? ! cmd.CaretX 1 + CaretX: cmd ! KeysOff: cmd ! prompt: cmd ShowCaret: cmd ! KeyBufferEmpty: cmd IF BEGIN c_key? UNTIL THEN Hidecaret: cmd ! GetKey: cmd ! cmd.CaretX 1- CaretX: cmd ! KeysOn: cmd ; ! (( ! : c_key ( -- c ) \ keys from WM_KEYDOWN also ****** use keybuffer??? EKEY??? ! \ cmd.CaretX 1 + CaretX: cmd ! KeysOff: cmd ! \ prompt: cmd ! KeyBufferEmpty: cmd IF BEGIN c_key? UNTIL THEN ! GetKey: cmd ! \ cmd.CaretX 1- CaretX: cmd KeysOn: cmd ; - )) - \ : c_key ( -- c ) 0 ; - - \ : tm timer-reset words cr .elapsed ; - - : c_Init-Console ( -- f ) progreg-init ptrNull SetPrompt: cmd start: ConsoleWindow true ; ! : c_INIT-SCREEN ( -- ) \ init the screen c_Init-Console drop ! SW_NORMAL Show: ConsoleWindow ; : c_FGBG! ( color_object color_object -- ) SetBackground: cmd SetForeground: cmd ; ! : c_FG@ ( -- color_object ) cmd.ForegroundColour ; ! : c_BG@ ( -- color_object ) cmd.BackgroundColour ; ! : c_&TheScreen ( -- a ) cmd.text ; ! : MarkAll ( - ) SelectAll: cmd ; ! : CopyConsole ( - ) Copy: cmd ; ! : PasteLoad ( - ) Paste: cmd ; ! : CutConsole ( - ) Cut: cmd ; ! 14 Tablength: cmd ! 0 LeftMargin: cmd ! 1 RightMargin: cmd \ so caret fits on end of line ! 4 TopMargin: cmd ! 4 BottomMargin: cmd - \ c_Init-Console drop - \ s" New Console" c_type - \ Green Red c_FGBG! Black White c_FGBG! --- 227,272 ---- : c_key? ( -- f ) KeysOff: cmd ! PauseForMessage ! \ PauseForMessages \ Winpause ! KeyBufferEmpty: cmd not cmd.VirtualKey or ! KeysOn: cmd ; ! : c_key ( -- c ) \ keys from WM_KEYDOWN as well ! 1 SetMaxChars: cmd ! Prompt: cmd ! KeyBufferEmpty: cmd IF BEGIN KeysOff: cmd WaitForMessage c_key? UNTIL THEN ! cmd.VirtualKey ?dup 0= IF GetKey: cmd THEN ! EndPrompt: cmd ; ! ! : c_Init-Console ( -- f ) \ start the Console window hidden or show console if already started ! progreg-init KeysOn: cmd + \ z" Win32Forth> " SetPrompt: cmd + GetHandle: ConsoleWindow 0= \ false if ConsoleWindow already started + Start: ConsoleWindow ; ! : c_Init-Screen ( -- ) \ start the Console window and show it c_Init-Console drop ! SW_NORMAL Show: ConsoleWindow ! Update: ConsoleWindow ! SetFocus: ConsoleWindow ! HideCaret: cmd ! ; : c_FGBG! ( color_object color_object -- ) SetBackground: cmd SetForeground: cmd ; ! : c_FG@ ( -- color_object ) cmd.ForegroundColour ; ! : c_BG@ ( -- color_object ) cmd.BackgroundColour ; ! : c_&TheScreen ( -- a ) cmd.text ; ! : c_CharWH ( -- w h ) CharWH: cmd ; ! : NewConhndl ( -- n ) GetHandle: ConsoleWindow ; ! 14 SetTablength: cmd ! 1 SetLeftMargin: cmd ! 1 SetRightMargin: cmd \ so caret fits on end of line ! 0 SetTopMargin: cmd ! 0 SetBottomMargin: cmd Black White c_FGBG! *************** *** 231,334 **** : K_NOOP2 0 0 ; : NewConsole ( -- ) ! \ reset all deferd words for the console window ['] NOOP IS INIT-CONSOLE-REG \ no ! ['] c_Init-Console IS INIT-CONSOLE ! ['] c_INIT-SCREEN IS INIT-SCREEN ! ['] c_key IS KEY ! ['] c_key? IS KEY? ! ['] c_accept IS ACCEPT ! ['] c_pushkey IS PUSHKEY ! ['] c_"pushkeys IS "PUSHKEYS \ ['] K_NOOP1 IS SHIFTMASK \ defined in Console.f - needed ! ['] c_cls IS CLS ! ['] c_emit IS EMIT ! ['] c_type IS TYPE ! ['] c_cr IS CR ! ['] c_?cr IS ?CR ! ['] NOOP IS CONSOLE \ no set up basic deferred stuff for console ! ['] 2DROP IS GOTOXY \ no ! ['] c_getxy IS GETXY ! ['] c_getcolrow IS GETCOLROW ! ['] K_NOOP1 IS SIZESTATE \ no ( WindowState ) ! ['] 4DROP IS MARKCONSOLE \ no ! ['] NOOP IS CURSORINVIEW \ no does nothing ??? ! ['] c_FGBG! IS FGBG! \ using foreground/background color_objects ! ['] c_FG@ IS FG@ ! ['] c_BG@ IS BG@ ! ['] K_NOOP2 IS CHARWH \ no ! ['] 2DROP IS SETCHARWH \ no ! ['] 2DROP IS SETCOLROW \ no ['] DROP IS SET-CURSOR \ no big-cursor, norm-cursor ??? ['] K_NOOP1 IS GET-CURSOR \ no ['] DROP IS SETROWOFF \ no ['] K_NOOP1 IS GETROWOFF \ no ! ['] K_NOOP2 IS GETMAXCOLROW \ max console size - see wrapper??? ! ['] 2DROP IS SETMAXCOLROW \ check wrapper??? ! ['] c_&TheScreen IS &THE-SCREEN \ #print-screen in dc.f will not work \ keysave not working ! ['] MarkAll is mark-all \ Used in the menu bar. ! ['] CopyConsole is copy-console ! ['] PasteLoad is paste-load ! ['] CutConsole is cut-console ! ; ! ! ! : OldConsole ( -- ) ! \ set all deferd words for the console window. ! ['] NOOP IS INIT-CONSOLE-REG ! ['] X_INIT-CONSOLE IS INIT-CONSOLE \ M_INIT-CONSOLE - hidden ! ['] X_INIT-SCREEN IS INIT-SCREEN ! ['] _MKEY IS KEY \ MENUKEY - hidden ! ['] _MKEY? IS KEY? ! ['] _LACCEPT IS ACCEPT \ _LACCEPT - hidden ! ['] X_PUSHKEY IS PUSHKEY ! ['] X_"PUSHKEYS IS "PUSHKEYS ! ['] X_SHIFTMASK IS SHIFTMASK ! ['] _mcls IS CLS ! ['] _MEMIT IS EMIT ! ['] _MTYPE IS TYPE ! ['] _MCRTAB IS CR ! ['] _M?CR IS ?CR ! ['] FORTH-IO IS CONSOLE ! ['] X_GOTOXY IS GOTOXY ! ['] X_GETXY IS GETXY ! ['] X_GETCOLROW IS GETCOLROW ! ['] X_SIZESTATE IS SIZESTATE ! ['] X_MARKCONSOLE IS MARKCONSOLE ! ['] X_CURSORINVIEW IS CURSORINVIEW ! ['] X_FGBG! IS FGBG! ! ['] X_FG@ IS FG@ ! ['] X_BG@ IS BG@ ! ['] X_CHARWH IS CHARWH ! ['] X_SETCHARWH IS SETCHARWH ! ['] X_SETCOLROW IS SETCOLROW ! ['] X_SET-CURSOR IS SET-CURSOR ! ['] X_GET-CURSOR IS GET-CURSOR ! ['] X_SETROWOFF IS SETROWOFF ! ['] X_GETROWOFF IS GETROWOFF ! ['] X_GETMAXCOLROW IS GETMAXCOLROW ! ['] X_SETMAXCOLROW IS SETMAXCOLROW ! ['] X_&THE-SCREEN IS &THE-SCREEN ! ['] mark_all IS mark-all ! ['] copy_console IS copy-console ! ['] _paste-load IS paste-load ! ['] cut_console IS cut-console ; ! : NN NewConsole ! 0 call SetFocus drop ! SetFocus: ConsoleWindow ; ! ! \ stop here for ExtendNew.f ! ! [DEFINED] oo not [IF] ! c_Init-Console drop ! s" Type oo to go back to the old console" c_type ! NN ! : OO OldConsole ! conhndl call SetFocus drop ; ! [THEN] --- 277,361 ---- : K_NOOP2 0 0 ; + : c_copy-console copy: cmd ; + : c_cut-console SelectAll: cmd Cut: cmd ; + : c_mark-all SelectAll: cmd ; + : c_paste-load Paste: cmd ; + + : NewConsole ( -- ) ! \ reset all defered words for the console window ['] NOOP IS INIT-CONSOLE-REG \ no ! ['] c_Init-Console IS INIT-CONSOLE ! ['] c_INIT-SCREEN IS INIT-SCREEN ! ['] c_key IS KEY ! ['] c_key? IS KEY? ! ['] c_accept IS ACCEPT ! ['] c_pushkey IS PUSHKEY ! ['] c_"pushkeys IS "PUSHKEYS \ ['] K_NOOP1 IS SHIFTMASK \ defined in Console.f - needed ! ['] X_SHIFTMASK IS SHIFTMASK ! ['] c_cls IS CLS ! ['] c_emit IS EMIT ! ['] c_type IS TYPE ! ['] c_cr IS CR ! ['] c_?cr IS ?CR ! ['] NOOP IS CONSOLE \ no ( NewConsole ) ! ['] c_gotoxy IS GOTOXY ! ['] c_getxy IS GETXY ! ['] c_getcolrow IS GETCOLROW ! ['] K_NOOP1 IS SIZESTATE \ no ( ConsoleWindow.WindowState ) ! ['] 4DROP IS MARKCONSOLE \ no ( 2swap swap GoToXY:cmd swap Select: cmd ) ! ['] NOOP IS CURSORINVIEW \ no ( does nothing ??? AutoScroll: cmd ) ! ['] c_FGBG! IS FGBG! \ using foreground/background color_objects ! ['] c_FG@ IS FG@ ! ['] c_BG@ IS BG@ ! ['] c_CharWH IS CHARWH \ ( cmd.HorzLine cmd.VertLine ) ! ['] 2DROP IS SETCHARWH \ no ( change the font ) ! ['] 2DROP IS SETCOLROW \ no ( resize ConsoleWindow ) ['] DROP IS SET-CURSOR \ no big-cursor, norm-cursor ??? ['] K_NOOP1 IS GET-CURSOR \ no ['] DROP IS SETROWOFF \ no ['] K_NOOP1 IS GETROWOFF \ no ! ['] K_NOOP2 IS GETMAXCOLROW \ max console size - see wrapper??? ! ['] 2DROP IS SETMAXCOLROW \ check wrapper??? ! ['] c_&TheScreen IS &THE-SCREEN \ #print-screen in dc.f will not work \ keysave not working ! ['] NewConHndl IS conHndl ! ['] c_copy-console IS copy-console ! ['] c_cut-console IS cut-console ! ['] c_mark-all IS mark-all ! ['] c_paste-load IS paste-load ; ! :noname ( c -- ) ! Case ! 'O' +k_control of edit-forth endof ! 'W' +k_control of open-web endof ! 'L' +k_control of load-forth endof ! 'P' +k_control of print-screen endof ! 'D' +k_control of ChdirDlg endof ! ( default ) \ swap drop ! EndCase ! ; is HandleChar ! :noname ( c -- ) ! ?shift ?control or ! IF drop ! ELSE ! Case ! VK_F1 of F1-doc endof ! \ VK_F2 of F2-help endof ! VK_F12 of LoadProject endof ! ( default ) \ swap drop ! EndCase ! THEN ! ; is HandleKeyDown ! : New-default-hello ( -- ) \ startup stuff ! initialization-chain do-chain ! exception@ if bye then ! get-commandline \ commandline to SOURCE ! default-application ! ; ! ' New-default-hello is default-hello Index: CommandWindow.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/console/CommandWindow.f,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CommandWindow.f 28 Jun 2008 20:40:31 -0000 1.5 --- CommandWindow.f 18 Jul 2008 19:46:00 -0000 1.6 *************** *** 1,4 **** --- 1,16 ---- \ $Id$ + \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + \ \\\\\ Version of Winpause \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + : PauseForMessages { | pMsg -- } \ Winpause + 7 cells LocalAlloc: pMsg + BEGIN PM_REMOVE 0 0 0 pMsg Call PeekMessage [...1464 lines suppressed...] ! :M ShowScrollBars: ( f -- ) SB_BOTH hWnd Call ShowScrollBar drop ;M ! )) :M On_Size: ( h m w - h m w ) ScrollPage GetClientRect: self --- 1172,1176 ---- WS_VSCROLL or ;M ! :M On_Size: ( h m w - h m w ) ScrollPage GetClientRect: self *************** *** 892,894 **** ;Class ! --- 1188,1191 ---- ;Class ! ' drop is HandleChar ! ' drop is HandleKeyDown |