codeblocks光标移动的问题
codeblocks吧
全部回复
仅看楼主
level 1
地板砖101 楼主
C语言,怎样用键盘方向键移动程序中的光标;
比如使上图最后一行零的光标可以随便移到
任何一个零那里
然后输入数字
大一C语言实训做数独游戏
试过用gotoxy
但是codeblocks报错说没有window.h的头文件
希望各位大神解答!!!!

2011年12月24日 09点12分 1
level 11
如果在windows平台编写程序,可以去msdn参考Windows上的console编程
可以全面对console标准输入和输出进行控制
你提到的gotoxy那是dos下的产物了
windows.h里确实不包含这些东西!
可以参考下面的例子:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686974(v=vs.85).aspx

2011年12月24日 15点12分 2
level 1
地板砖101 楼主
看不懂,不过还是谢谢了
昨天找了很久才找到一个可以理解的方法
void gotoxy(int x, int y)
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(hOut, pos); /* 设置光标位置 */
}
这个在codeblocks里包含了windows.h头文件就能用了
不过还要找一个能获取光标当前位置的方法。。。。。
知道的帮帮忙,谢谢
2011年12月25日 04点12分 3
level 11
你贴出来的,在msdn上都有
要获取cursor坐标,用下面的API函数
BOOL WINAPI GetConsoleScreenBufferInfo(
__in HANDLE hConsoleOutput,
__out PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
);
关于console的所有API函数msdn上都有参考,以及详细的例子
对于初学者,因为都是英文,可能阅读起来有点困难,尝试学会使用msdn,应该会获益很多!
比如利用上面的api,可以获取当前console窗口的光标信息,还有其他的讯息以后也许用到
CONSOLE_SCREEN_BUFFER_INFO csbiInfo; //定义一个console 窗口缓冲信息数据结构
HANDLE hStdout= GetStdHandle(STD_OUTPUT_HANDLE); //和你贴出来的代码中做法一样
GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) ;
CONSOLE_SCREEN_BUFFER_INFO结构中的成员dwCursorPosition包含光标坐标,我把该结构定义摘录如下:
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
COORD dwSize;
COORD dwCursorPosition;
WORD wAttributes;
SMALL_RECT srWindow;
COORD dwMaximumWindowSize;
} CONSOLE_SCREEN_BUFFER_INFO;

2011年12月25日 08点12分 4
level 1
地板砖101 楼主
恩恩,非常感谢!!!
因为要赶游戏,您的建议只能先放下了。。。呵呵
后面会认真去学习的
再次感谢[呵呵]
2011年12月25日 15点12分 5
level 11
good luck![大笑]
2011年12月26日 04点12分 6
level 7
good luck
2015年06月07日 08点06分 7
1