VC++6.0如何获取光标的行号和列号

是做一个简单的记事本程序,想在状态栏显示当前光标的所在行、所在列(好像需要一定算法),能否详细一点,必有重谢!再补充:MFC应用程序!... 是做一个简单的记事本程序,想在状态栏显示当前光标的所在行、所在列(好像需要一定算法),能否详细一点,必有重谢!
再补充:MFC应用程序!
展开
 我来答
kingjnu
2010-12-16 · TA获得超过138个赞
知道答主
回答量:33
采纳率:0%
帮助的人:50.5万
展开全部
命令行的光标(ConsoleCursor)其实就是一个另类的插入符(Caret)。插入符是什么呢?当你在记事本打字的时候,那个一闪一闪的竖线就叫做插入符。插入符的作用有多大呢?没有了插入符,假如你正在输入第二十个字,突然发现第一个字打错了,那么你得把正确的十九个字和错误的第一个字全删了,再把所有东西重新打一遍。然而,系统没有给任何命令是可以操作命令行光标的,光标的存在实在是名存实亡,完全不能发挥光标的真正用途。本教程的目的,就是让大家学会在命令行程序中控制光标。

一、CONSOLE_CURSOR_INFO 结构体

CONSOLE_CURSOR_INFO 结构体中包含了关于命令行光标的一些信息,是否显示和光标大小两个信息。通过更改这个结构体,再赋给命令行,就可以实现想要的一些效果了。

基本思路:

首先先读取命令行现在的 CONSOLE_CURSOR_INFO 结构体信息,需要用到API函数GetConsoleCursorInfo。GetConsoleCursorInfo 需要用到输出句柄,可以通过API函数GetStdHandle获得。

然后改变结构体信息,再使用API函数SetConsoleCursorInfo

例:

隐藏光标:

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(hOut,&cci);
cci.bVisible=false;
SetConsoleCursorInfo(hOut,&cci);

二、控制台光标的位置

现在能够控制光标的样式了,但对于批处理来说还远远不够。大部分强大的第三方工具都有设置和获得光标位置的功能,这节我们就来讨论如何实现。

设置光标位置需要用到API函数SetConsoleCursorPosition,需要的参数还是输出句柄,和欲设置的坐标。坐标用COORD结构体就可以了。

例:

将光标移动到(5,3):

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X=5;
pos.Y=3;
SetConsoleCursorPosition(hOut,pos);

获取光标的位置,没有专用的API函数。我们需要通过另一个API函数GetConsoleScreenBufferInfo来获取。其中,GetConsoleScreenBufferInfo的参数分别为输出句柄以及CONSOLE_SCREEN_BUFFER_INFO结构体的指针。CONSOLE_SCREEN_BUFFER_INFO结构体中包含了许多控制台缓冲区的属性,其中我们需要的是一个名为dwCursorPosition的COORD结构体,包含了光标的位置。

例:

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO bInfo;
GetConsoleScreenBufferInfo(hOut, &bInfo);

上面的例子,bInfo.dwCursorPosition就是当前的坐标

参考资料: http://apps.hi.baidu.com/share/detail/18803369

npduv45
2010-12-16 · TA获得超过3612个赞
知道小有建树答主
回答量:1324
采纳率:0%
帮助的人:781万
展开全部
你是让光标处于了改写状态,按下键盘上的Insert键就会回到正常插入状态。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
znwfromhell
2010-12-19
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
用GETCURSOR
晕好象我只知道SDK,VC框架不熟悉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式