• 全部
  • 问答

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

yilong 2001-07-21 02:24:13
C语言中如何在图形输出模式下把光标定义在自己想要的位置?
请问是哪个函数?我查了半天都没有找到。谢了先。
...全文
132 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
风中老长 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 ) ;来设置中断向量表,但要注意原先的中断向量的保存和恢复,切忌!!!
回复
相关推荐
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-21 02:24
社区公告
暂无公告