-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCONSOLE.F
171 lines (146 loc) · 3.03 KB
/
CONSOLE.F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
\ ¡®â á ª®á®«ìî
WINAPI: WriteConsoleOutputCharacterA kernel32.dll
REQUIRE CursorPos@ ~micro/lib/windows/mouse.f
REQUIRE GetDesktopWindow ~micro/lib/windows/window.f
REQUIRE .R lib/include/core-ext.f
: ANIM:
\ ANIM: <name> <ᨬ¢®«ë>
\ á®§¤ ñâ ¬ã«ì⨪ <name>, á®áâ®ï騩 ¨§ ª ¤à®¢-ᨬ¢®«®¢ <ᨬ¢®«ë>
\ ˆá¯®«ì§ã¥âáï: SetAnim <name>
\ <name> ( -- addr u )
CREATE
0 PARSE
DUP ,
HERE
SWAP
DUP ALLOT
MOVE
DOES>
DUP @
SWAP CELL+
SWAP
;
VECT ANIM ( -- addr u )
\ ⥪ã騩 ¬ã«ì⨪
VARIABLE NANIM
\ ü ⥪ã饣® ª ¤à
: SetAnim
\ SetAnim <name> ¨¨æ¨ «¨§¨àã¥â ¬ã«ì⨪ <name>
' TO ANIM
NANIM 0!
;
: ToRange ( size n1 -- n2 )
\ ®à¬ «¨§ã¥â ¤à¥á æ¨î n1 ¢ áâப¥ á ¤«¨®© size.
\ 4 3 ToRange \ 3
\ 4 4 ToRange \ 0
\ 4 5 ToRange \ 0
DUP ROT
< AND
;
: GetAnimSymbol ( -- á )
\ ¢ë¤ ñâ ®ç¥à¥¤®© ᨬ¢®« ⥪ã饣® ¬ã«ì⨪
ANIM SWAP
NANIM @ + C@ >R
NANIM @ 1+ ToRange NANIM !
R>
;
CREATE StatusLine 80 ALLOT
\ áâப áâ âãá
: ClearStatusLine
\ ®ç¨áâ¨âì áâபã áâ âãá
StatusLine 80 BL FILL
;
: PutAnim
\ § ¯¨á âì ®ç¥à¥¤®© ᨬ¢®« ¬ã«ì⨪ ¢ ¯¥à¢ë© ᨬ¢®« áâப¨ áâ âãá
GetAnimSymbol StatusLine C!
;
: PutMouseCoord
\ § ¯¨á âì ª®®à¤¨ âë ¬ëè¨ ¢ áâபã áâ âãá
BASE @
CursorPos@
DECIMAL
S>D <# #S #> StatusLine 2 + SWAP MOVE
S>D <# #S #> StatusLine 6 + SWAP MOVE
BASE !
;
: FillStatusLine
\ § ¯®«¨âì áâபã áâ âãá
ClearStatusLine
PutAnim
PutMouseCoord
;
: ShowStatusLine
\ ®â®¡à §¨âì áâபã áâ âãá
FillStatusLine
0 SP@
0
80
StatusLine
H-STDOUT
WriteConsoleOutputCharacterA
2DROP
;
\ ‘«¥¤ãî騥 á«®¢ ¯à¥¤ § ç¥ë ¤«ï à ¡®âë á Žª®ë¬ ¢¨£ â®à®¬
VARIABLE CurrentWindow
\ åí¤« ⥪ã饣® ®ª
20 VALUE Lines
\ ç¨á«® ¥¯à¥à뢮 ¢ë¢®¤¨¬ëå áâப.
\ â®ç¥¥, íâ® ç¨á«® CR-®¢, ¢ë¯®«ï¥¬ëå ¡¥§ ®áâ ®¢ª¨
VARIABLE LinesLeft
\ ç¨á«® áâப, ª®â®àë© ¥éñ ¡ã¤ã⠢뢥¤¥ë ¡¥§ ®áâ ®¢ª¨
: CR
\ ®¢ë© CR, á § ¯à®á®¬ ¯à®¤®«¦¥¨¥ ¢ë¢®¤
CR
LinesLeft @ 1- DUP LinesLeft !
0< IF
Lines LinesLeft !
." -- more -- space-abort" CR KEY BL = ABORT" Aborted"
THEN
;
: ShowWindowInfo ( hwnd -- )
\ ¯®ª § âì ¨ä®à¬ æ¨î ®¡ ®ª¥
DUP ." hwnd=" 4 .R
DUP GetWindowOwner ." ; owner=" 4 .R
DUP WindowRect@
." ; coord=(" 4 .R ." ," 4 .R ." ;" 4 .R ." ," 4 .R ." )" CR
DUP GetWindowText ." text='" ANSI>OEM TYPE ." '" CR
GetWindowClass ." class='" ANSI>OEM TYPE ." '" CR
;
: cw
\ ¯®ª § âì ¨ä®à¬ æ¨î ® ⥪ã饬 ®ª¥
CurrentWindow @ ShowWindowInfo CR
;
: MyOk
\ ®¢ë© OK (¢ SPF ¢ë¯®«ï¥âáï ¯¥à¥¤ § ¯à®á®¬ ®¢®© áâப¨ á ª®á®«¨)
CR
." Current window: "
cw
Lines LinesLeft !
;
: childs
\ ¢ë¢®¤ ᯨ᪠¤®ç¥à¨å ®ª® ⥪ã饣® ®ª
CurrentWindow @
GetWindowChild
DUP IF
BEGIN
DUP ShowWindowInfo CR
GetWindowNext ?DUP
0= UNTIL
ELSE
." no childs"
THEN
CR
;
: nc ( hwnd -- )
\ § ¤ ¨¥ ⥪ã饣® ®ª
CurrentWindow !
;
: ..
\ ¯¥à¥¬¥é¥¨¥ ª ®ªã-¢« ¤¥«ìæã ⥪ã饣®
CurrentWindow @ GetWindowOwner CurrentWindow !
;
\ default config =================================
ANIM: ANIM1 °±²Û²±°
ANIM: ANIM2 úùOù
SetAnim ANIM1
20 TO Lines