| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 905 人关注过本帖
标题:求助!初级者不必看了!
只看楼主 加入收藏
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
你认为这样赋值choice=HEX;正确吗?

♂ 死后定当长眠,生前何须久睡。♀
2006-03-04 21:33
梦想中国
Rank: 2
等 级:新手上路
威 望:5
帖 子:539
专家分:0
注 册:2006-2-26
收藏
得分:0 
不正确吗?

2006-03-04 21:37
moon
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-3-5
收藏
得分:0 

。。。。。
首先  我不知道你写的是什么~
16,10,8,2进制之间的转换用鼠标干嘛?
  也不知道你的那部分是鼠标~~

呵呵   还有  就是转换~  没看明白什么地方是转换!
理解你想写模块化程序! 但是  劝你先做好扎实的基本工在说!

至少鼠标是:
int pmx,pmy,brea,breb;

void Initgr(void) /*鼠标参数初始化*/
{
setviewport(ZTSX, ZTSY, ZTXX, ZTXY, 1);
x_max=X__max=ZTXX-ZTSX;
y_max=Y__max=ZTXY-ZTSY;
/*x_max,y_max:屏幕坐标的宽度 w,h纵横比 X__max,Y__max横纵向象点坐标数*/
Msinit(0,ZTXX-ZTSX,0,ZTXY-ZTSY);/*初始化鼠标*/
brea=x_max;
breb=y_max;
}


int Msinit(int Xlo,int Xhi,int Ylo,int Yhi)/*鼠标初始化*/
{
int retcode;
regs.x.ax=0;/*初始化鼠标*/
int86(0x33,&regs,&regs);
retcode=regs.x.ax;
if(retcode==0) return 0;
regs.x.ax=7;/*设置鼠标X方向的移动范围*/
regs.x.cx=Xlo;
regs.x.dx=Xhi;
int86(0x33,&regs,&regs);
regs.x.ax=8;/*设置鼠标Y方向的移动范围*/
regs.x.cx=Ylo;
regs.x.dx=Yhi;
int86(0x33,&regs,&regs);
regs.x.ax=15;/*设置mickey与象素的比,这各会影响鼠标移动速度*/
regs.x.cx=(int)(x_max/X__max);
regs.x.dx=(int)(y_max/Y__max);
int86(0x33,&regs,&regs);
return retcode;
}

int Msread(int *px,int *py,int *pbuttons)/*读鼠标位置及状态*/
{
static int x0=320,y0=240,but0=0;
int xnew,ynew,ch;
do{
if(kbhit())
{
ch=getch();
if(ch==13)
{
*pbuttons=1;
return 13;
}
else
return ch; /*返回键盘输入*/
}
regs.x.ax=3; /*调用功能3,读鼠标位置及状态*/
int86(0x33,&regs,&regs);
xnew=regs.x.cx;/*返回鼠标当前的位置的X坐标*/
ynew=regs.x.dx;/*返回鼠标当前的位置的Y坐标*/
*pbuttons=regs.x.bx;/*返回鼠标当前的状态*/
}while(xnew==x0&&ynew==y0&&*pbuttons==but0);

/*当鼠标状态改变或位置改变终止循环*/
but0=*pbuttons;/*将鼠标状态保存到静态变量中*/
x0=xnew;y0=ynew;/*将鼠标位置保存到静态变量中*/
*px=xnew;*py=(int)(y_max-ynew);
return -1;
}


int Xpixel(int x)/*由象素坐标变换为屏幕坐标*/
{
return (int)((long)X__max*x/x_max);
}


int Ypixel(int y)
{
return Y__max-(int)((long)Y__max*y/y_max);
}


void Cursor(int x,int y) /*显示十字光标*/
{
int X=Xpixel(x),Y=Ypixel(y);

setcolor(color0);
line(X-8,Y,X-3,Y);
line(X,Y-8,X,Y-4);
line(X+3,Y,X+8,Y);
line(X,Y+4,X,Y+8);
}


/*光标移动(任意键确认退出)*/
char mymouse(void)
{
int buttons,fztx,fzty=-1;

setwritemode(XOR_PUT);/*设置屏幕输出模式*/
Cursor(brea,breb); /*在a=x_max;b=y_max;处画指针*/
fztx=0;

while(fzty == -1)
{
fzty=Msread(&pmx,&pmy,&fztx);
Cursor(brea,breb); /*删除之前的鼠标,因为屏幕输出模式的关系*/
Cursor(pmx,pmy);
brea=pmx;
breb=pmy;

x=(int)(pmx*1.0/x_max*X__max);
y=(int)((y_max-pmy)*1.0/y_max*Y__max);
if(fztx==1)
{
fzty = 13;
}
}
Cursor(pmx,pmy);/*再调用一次把原来的指针削掉*/
setwritemode(0);
setcolor(color1);
return fzty;
}


/*画图工具内部光标移动(点左键确认退出)*/
void mygmous(void)
{
int buttons,fztx,fzty=1;

setwritemode(XOR_PUT);/*设置屏幕输出模式*/
Cursor(brea,breb); /*在a=x_max;b=y_max;处画指针*/
fztx=0;

while(fztx != 1)
{
Msread(&pmx,&pmy,&fztx);
Cursor(brea,breb); /*删除之前的鼠标,因为屏幕输出模式的关系*/
Cursor(pmx,pmy);
brea=pmx;
breb=pmy;

x=(int)(pmx*1.0/x_max*X__max);
y=(int)((y_max-pmy)*1.0/y_max*Y__max);
}
Cursor(pmx,pmy);/*再调用一次把原来的指针削掉*/
setwritemode(0);
setcolor(color1);
}


还有数值转换用不着这样!
  几个位运算就搞定了!

这个是我写的一个画图软件的鼠标模块~
整个程序在:http://impact.ik8.com/mysoft.rar
要原代,可加我MSN 或者给我写信(QQ也成,不过我不怎么用QQ)


ARM+LINUX嵌入式   -月满西楼
2006-03-05 15:13
快速回复:求助!初级者不必看了!
数据加载中...
 
   



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

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