Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 如何在Forth中使用ReadConsoleOutputCharacterA?_Winapi_Console_Forth - Fatal编程技术网

Winapi 如何在Forth中使用ReadConsoleOutputCharacterA?

Winapi 如何在Forth中使用ReadConsoleOutputCharacterA?,winapi,console,forth,Winapi,Console,Forth,我用 WINAPI:ReadConsoleOutputCharacterA KERNEL32.DLL 这似乎可行,但如何处理输入和输出参数?特别是,如何获得 hConsoleOutput[在]控制台屏幕缓冲区的句柄中。把手 必须具有通用_读取访问权限。有关详细信息,请参阅 控制台缓冲区安全性和访问权限 hConsoleOutput只有一个合适的句柄。ReadConsoleOutputCharacter的一些用法示例可以在devel目录(贡献)中找到 此API用法的示例: \ Global var

我用

WINAPI:ReadConsoleOutputCharacterA KERNEL32.DLL

这似乎可行,但如何处理输入和输出参数?特别是,如何获得

hConsoleOutput[在]控制台屏幕缓冲区的句柄中。把手 必须具有通用_读取访问权限。有关详细信息,请参阅 控制台缓冲区安全性和访问权限


hConsoleOutput
只有一个合适的句柄。
ReadConsoleOutputCharacter
的一些用法示例可以在
devel
目录(贡献)中找到

此API用法的示例:

\ Global variables in dictionary space just for learning,
\ -- don't use such approach, especially in multithreading.
VARIABLE lpNumberOfCharsRead
CREATE lpCharacter 5 CHARS ALLOT \ buffer for 5 chars

: XYC@ ( x y -- c )
  16 LSHIFT OR >R \ COORD
  0 lpCharacter C!
  lpNumberOfCharsRead \ _Out_ LPDWORD lpNumberOfCharsRead
  R> \ dwReadCoord
  1  \ nLength  \ to read
  lpCharacter \ _Out_ LPTSTR  lpCharacter
  H-STDOUT
  ReadConsoleOutputCharacterA ERR THROW
  lpCharacter C@
;

\ test
0 0 XYC@ EMIT
有用的包装器:

: READOUT-CONSOLE-XY ( a-buf u x y -- a-buf u2 ior )
  2SWAP 2>R 16 LSHIFT OR >R
  0 SP@ R>          ( 0 addr-cnt coord )
  R> R@ H-STDOUT    ( 0 addr-cnt coord u a-buf handle )
  ReadConsoleOutputCharacterA ERR ( u2 ior )
  R> -ROT
;

\ test
HERE 50 0 0 READOUT-CONSOLE-XY THROW  TYPE