C语言下光标控制
用VC做一个win32控制台程序,要用到菜单,想要用光标来控制选择菜单,不知道需要哪些头文件和函数,希望大家帮帮忙。
[解决办法]
关注
[解决办法]
在cosole下可以用
BOOL SetConsoleCursorPosition(
HANDLE hConsoleOutput, // handle to console screen buffer
COORD dwCursorPosition // new cursor position coordinates
);
在窗口模式下用SetCursorPos();
[解决办法]
gotoxy(int,int);
[解决办法]
VC的conio.h头文件取消了光标定位和清屏等函数,但还是有办法实现这些功能的。
查查MSDN帮助,那里有教你。
我这里有一个自己写好的myconio.h,基本上就是抄下了来^_^
#ifndef _MY_CONIO_H_FILE_INCLUDED
#define _MY_CONIO_H_FILE_INCLUDED
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define PERR(bSuccess,api) {if(!(bSuccess)) printf( "%s:Error %d from %s on line %d\n ",\
__FILE__,GetLastError(),api,__LINE__);}
void MyCls(HANDLE);
void GotoConsoleXY(HANDLE,int,int);
inline void clrscr(void)
{
HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
MyCls(hStdOut);
return;
}
inline void gotoxy(int x,int y)
{
HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
GotoConsoleXY(hStdOut,x,y);
return;
}
void MyCls(HANDLE hConsole)
{
COORD coordScreen={0,0};//设置清屏后光标返回的屏幕左上角坐标
BOOL bSuccess;
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;//保存缓冲区信息
DWORD dwConSize;//当前缓冲区可容纳的字符数
bSuccess=GetConsoleScreenBufferInfo(hConsole,&csbi);//获得缓冲区信息
PERR(bSuccess, "GetConsoleScreenBufferInfo ");
dwConSize=csbi.dwSize.X * csbi.dwSize.Y;//缓冲区容纳字符数目
//用空格填充缓冲区
bSuccess=FillConsoleOutputCharacter(hConsole,(TCHAR) ' ',dwConSize,coordScreen,&cCharsWritten);
PERR(bSuccess, "FillConsoleOutputCharacter ");
bSuccess=GetConsoleScreenBufferInfo(hConsole,&csbi);//获得缓冲区信息
PERR(bSuccess, "ConsoleScreenBufferInfo ");
//填充缓冲区属性
bSuccess=FillConsoleOutputAttribute(hConsole,csbi.wAttributes,dwConSize,coordScreen,&cCharsWritten);
PERR(bSuccess, "FillConsoleOutputAttribute ");
//光标返回屏幕左上角坐标
bSuccess=SetConsoleCursorPosition(hConsole,coordScreen);
PERR(bSuccess, "SetConsoleCursorPosition ");
return;
}
void GotoConsoleXY(HANDLE hConsole,int x,int y)
{
COORD coordScreen={x,y};
SetConsoleCursorPosition(hConsole,coordScreen);
return;
}
#endif //_MY_CONIO_H_FILE_INCLUDED
[解决办法]
鼠标都没有,哪来光标..
[解决办法]
楼主想干什么?
如果想改变光标位置输出用这个函数:
goto(int x,int y);
x和y为坐标!
如果想控制鼠标!
要用中断函数!
interrupt()
[解决办法]
如果是在DOS下,就可以用gotoxy(int,int);如果是在windos下,我也不知道了