C语言中如何在图形输出模式下把光标定义在自己想要的位置?

yilong 2001-07-21 02:24:13
C语言中如何在图形输出模式下把光标定义在自己想要的位置?
请问是哪个函数?我查了半天都没有找到。谢了先。
...全文
274 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
风中老长 2001-07-23
  • 打赏
  • 举报
回复
大学的时候写过类似的东东,不要笑我啊,全局变量好象都是int型
void interrupt far new_handler(...)
{
show_sever++;
if(show_sever==20)
{
show_sever=0;
setcolor(7);
line(xx1,yy1+1,xx1,yy1+15);
line(xx1+1,yy1+1,xx1+1,yy1+15);
}
if(show_sever==10)
{
setcolor(0);
line(xx1,yy1+1,xx1,yy1+15);
line(xx1+1,yy1+1,xx1+1,yy1+15);
}
}

void show_on(void)
{
old=getvect(0x1c);
setvect(0x1c,new_handler);
}

void show_off(void)
{
setvect(0x1c,old);
}
SCUM 2001-07-21
  • 打赏
  • 举报
回复
顺便指出,Sunbow_xlj(部落) 的代码工作起来不可能稳定。
如果一定要那样做,就应该考虑重入的问题,加个变量来防止死机。


SCUM 2001-07-21
  • 打赏
  • 举报
回复

12h 以上图形模式中 BIOS INT10h 不直接支持光标的显示,只能自己画。
12h 以下图形模式中,可能通过 BIOS INT10h 调用决定是否由 BIOS INT10h 显示光标。

tinyghost 2001-07-21
  • 打赏
  • 举报
回复
tc中可以用伪汇编的命令,用int10可以使用,有的书上有这种用法,我记得tc2。0中好象有个
outxy()的可以在指定位置输出文字,
Sunbow_xlj 2001-07-21
  • 打赏
  • 举报
回复
如果是dos环境中据我所知道,好像在图形模式下没有光标的处理函数,你可以在你的程序中加一个中断处理函数,用它来截获时钟中断(中断号是 0x1c)。
下面就是这个函数
void interrupt display_cur( )
{
static int m_display = 1;
static int m_count = 0;
unsigned color;

color = getcolor( ) ;
m_count++ ;
if( m_count >= 6 && m_display )
     /* 这里的数字‘6’是用来调节光标闪烁速度的,你可以改变它的值*/
{
m_count = 0 ;
m_display = 0 ;
setcolor( gb_Color ) ;
line( gx, gy, gx, gy + 10 ) ; 
     /* gb_Color,gx,gy和下面的gb_Color_back都是全局变量*/
     /* gb_Color : 光标的颜色 */
/* gb_Color_back : 背景颜色 */
/* gx,gy,时光标的位置坐标 */
}
if( count >= 4 && !m_display )
     /* 这里的数字‘4’是用来调节光标闪烁速度的,你可以改变它的值*/
{
m_count = 0 ;
m_display =1 ;
setcolor( gb_Color_back ) ;
line( gx, gy, gx, gy + 10 ) ;
}
setcolor( color ) ;
}
你也可以用异或的方法来让光标闪烁。
在程序中你可以用setvect( 0x1c, display_cur ) ;来设置中断向量表,但要注意原先的中断向量的保存和恢复,切忌!!!

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧