首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Forth中使用ReadConsoleOutputCharacterA?

如何在Forth中使用ReadConsoleOutputCharacterA?
EN

Stack Overflow用户
提问于 2015-06-01 18:11:57
回答 1查看 125关注 0票数 2

我使用

WINAPI: ReadConsoleOutputCharacterA KERNEL32.DLL

这似乎是可行的,但如何处理输入和输出参数?尤其是如何

控制台屏幕缓冲区句柄中的hConsoleOutput。句柄必须具有GENERIC_READ访问权限。有关更多信息,请参见控制台缓冲区安全性和访问权限。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-01 23:58:35

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

此API使用示例:

代码语言:javascript
复制
\ 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

有用的包装:

代码语言:javascript
复制
: 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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30580334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档