如何将光标定位在屏幕上?

时间:2014-11-12 14:33:03

标签: c ide codeblocks cursor-position

我是编程方面的新手,目前正在学习C中的数组。我正在制作一个拼图,其中包含15个编号方块,安装在一个框架上,一个是空的。它允许用户点击任何箭头键(向上,向下,向左,向右)。用户将继续按箭头键,直到数字没有按升序排列。这些部分可以水平和垂直移动。 我的问题是我不知道如何定位光标。我知道库函数 gotoxy()但我认为它在Turbo C / C ++中使用。我正在使用Code Blocks.I在Google上搜索了这个,但无法得到结果。是的,我正在谈论键盘光标并使用窗口操作系统。请帮忙! :)

1 个答案:

答案 0 :(得分:3)

在过去,MS / DOS使用特殊的驱动程序ANSI.SYS来模拟ANSI命令代码。看起来这个好的旧驱动程序在Windows XP下可用(但你需要在config.sys中配置它),但我发现一些文章说它不再适用于Windows 7及更高版本。

所以ANSI(或vt100或vt220)代码在Linux或Unix终端中很有用,但在Windows下,我的建议是直接使用Wincon.h中声明的Windows API控制台函数 - 但是你应该总是包含Windows.h使用Windows API函数时。

您需要使用Windows SDK作为参考,但这是一个在位置15,5中编写foo_bar的小程序:

#include <windows.h>
#include <tchar.h> // compatibility 8/16 bits characters

int _tmain(int argc, const LPSTR *argv) {
    HANDLE hStdOut = ::GetStdHandle(STD_OUTPUT_HANDLE); // console output handle
    COORD dwCursorPosition;
    DWORD nb;
    dwCursorPosition.X = 15;
    dwCursorPosition.Y = 5;
    ::WriteConsoleOutputCharacter(hStdOut, _T("foo_bar"), 7, dwCursorPosition, &nb);

    return 0;
}

参考文献:MSDN上的Console Reference

相关问题