| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2697 人关注过本帖
标题:[求助]如何用C语言实现光标操作?
只看楼主 加入收藏
Caesar
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-1-23
收藏
 问题点数:0 回复次数:3 
[求助]如何用C语言实现光标操作?

我想做一个界面,上面有一些模块,每个模块在界面上表现为一几何图形,我想做成当某一个模块被选中是,颜色发生变化,然后用键盘上的光标移动键(上,下,左,右)来改变被选中的模块,用回车控制进入某个模块,各位谁有这方面的文章,共享一下,谢谢!!

[此贴子已经被作者于2006-1-26 21:26:10编辑过]

搜索更多相关主题的帖子: C语言 光标 
2006-01-26 21:11
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
建议你参考一下bioskey函数的用法。

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2006-01-28 10:54
YF1042
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-1-30
收藏
得分:0 

/***************************希望对你有用^_^******************************/


#include<graphics.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#define N 1000

int *buffer; /*保存屏幕内容到缓冲区的指针*/

/******************主函数*********************/
main()
{
int gd,md;
gd=DETECT;
initgraph(&gd,&md,"");
settextstyle(0,0,2);
Information(120,400,2,"Press <Enter> to come in!");
Menu_Preface();
Out_Tittle();
choose(80);
}

/****************显示菜单函数****************/
Menu_Preface()
{
int i,size;
int x,y,r; /*x,y为起始位置,r为椭圆半径*/
x=70; y=70; r=20;
clrscr(); /*清除文本*/
cleardevice(); /*清除图形*/
setbkcolor(1);
border(10,10,630,470,10,4,2,11,0);
setfillstyle(1,4);
setcolor(2);
circle(x,y,r);
floodfill(x,y,2);
size=imagesize(x-r,y-r,x+r,y+r);
buffer=malloc(size);
getimage(x-r,y-r,x+r,y+r,buffer);
sun(13,5);
gotoxy(15,13);
}

/*********发声函数**********/
sun(int i,int n)
{
sound(100*i);
for(i=1;i<=n;i++)
delay(6*N/10);
nosound();
}

/**********输出菜单文字和图标函数***********/
Out_Tittle()
{
int i;
setcolor(2);
outtextxy(40,60,"para");
outtextxy(130,60,"Build");
outtextxy(240,60,"Show");
outtextxy(350,60,"nbx");
outtextxy(432,60,"About");
outtextxy(540,60,"quit");
for(i=1;i<=6;i++)
{ setcolor(1+i);
    ellipse(100*i-30,70,0,360,40,25);
}
}

/***********闪烁字母函数,用于提示操作*************/
Information(int x,int y,int c,char *s)
{
int i=0;
setcolor(c);
outtextxy(x,y,s);
while(!kbhit())
 { outtextxy(x+95,y,"<Enter>");
  setcolor(i+1);
 i++;
 delay(5*N);
 }
getch();
}


/************************通用边框函数*************************/
border(int x,int y,int m,int n,int d ,int curr_c,int fill_c,int fill_mode,int flag)
{
setcolor(curr_c);
setfillstyle(fill_mode,fill_c);
rectangle(x,y,m,n);
rectangle(x+d,y+d,m-d,n-d);
if(d>1) floodfill(x+1,y+1,curr_c);
if(flag==1) /*表示内外边框也填充*/
{ setfillstyle(1,fill_c);
    floodfill(x+d+1,y+d+1,curr_c);
}
}

/********************选择菜单函数**********************/
choose(int x)
{
char c;
do
{ Out_Tittle();
    c=getch();
    switch(c)
  { case 77 :  {  x=x+100;
          putimage(x-30-100,80-30,buffer,1);
          if(x>580) x=80;
          putimage(x-30,80-30,buffer,0);
          sun(12,4); Out_Tittle(); break;
          }
      case 75 : {  x=x-100;
          putimage(x-30+100,80-30,buffer,1);
          if(x<80) x=580;
          putimage(x-30,80-30,buffer,0);
          sun(12,4); Out_Tittle(); break;
           }
       case 13: { sun(13,6);
           switch(x)
            {  case 80 : { /*此处填写你按下回车键后执行的事件*/ Menu_Preface(); break; }
             case 180 : { /*此处填写你按下回车键后执行的事件*/ Menu_Preface(); break; }
             case 280 : { /*此处填写你按下回车键后执行的事件*/ Menu_Preface(); break; }
             case 380 : { /*此处填写你按下回车键后执行的事件*/ Menu_Preface(); break; }
             case 480 : { /*此处填写你按下回车键后执行的事件*/ Menu_Preface(); break; }
             case 580 : { closegraph(); free(buffer); exit(0); }
            } /*与switch(x)配对*/
          x=80; break;
          } /*与case 13配对*/

    } /*与switch(c)配对*/

    }while(c!=27); /*按ESC键退出*/
}



2006-02-08 02:47
jisujeke
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-7-4
收藏
得分:0 
顶起
2013-07-07 15:13
快速回复:[求助]如何用C语言实现光标操作?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039165 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved