我看到几个问题把我的头顶部:
没有错误检查。如文档所述,您必须检查ReadConsoleOutput和其他函数的返回值。如果函数失败,则必须调用GetLastError()来获取错误代码。如果你不检查错误,你就会失明。
你不会分配一个缓冲区来接收数据。(当然,文档混淆意味着它会为你分配缓冲区,但这显然是错误的,因为它无法返回指向它的指针。 )
看起来好像您打算读取您写入的字符,但是您正在写入(但是, 10,5)和从(0,0)中读取。
你传递newpos
,被设置为(10,5),作为当你调用ReadConsoleOutput,但你指定的(2,1)的缓冲区大小。目标坐标不在缓冲区之外是没有意义的。
以最后两分在一起,我想也许你已经和lpReadRegion
困惑,虽然我不知道你的意思是坐标(200,50)做。
- 您正在将最终的
printf
声明中的CHAR_INFO
解释为整数。 CHAR_INFO
的第一个元素是字符本身,而不是属性。您可能想要说chiBuffer[0].Attributes
而不仅仅是chiBuffer[0]
。 (当然,这是目前无实际意义,因为chiBuffer
指向随机内存地址。)
如果你要检索的字符,您首先需要解决的控制台是Unicode或ASCII模式,并相应地检索UnicodeChar或AsciiChar。
你看过http://msdn.microsoft.com/en-us/library/windows/desktop/ms685032(v=vs.85).aspx? – 2014-12-05 21:59:31
@JonathanPotter也许是的,但我正在开发一个巨大的项目,它将贡献控制台应用程序员的整个环境,我不能浪费时间做错了(我不喜欢Windows管理事物的方式)。最好的场景将会是有人说这是我需要的功能,并为我提供了一个如何尽可能少使用代码的例子。 – Protogrammer 2014-12-05 22:26:42