subject_22998.htm

来自「一些关于vc的问答」· HTM 代码 · 共 54 行

HTM
54
字号
<p>
序号:22998 发表者:东海藏龙 发表日期:2002-11-30 09:46:41
<br>主题:怎么让tc的exe文件响应键盘或鼠标事件?
<br>内容:意思就是tc的exe运行后,会出现图象,比如说一个棋盘或者一辆车子等,我想用鼠标移动棋子或者用up键控制车子向上跑,应该怎么做?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:塞翁 回复日期:2002-11-30 14:56:54
<br>内容:鼠标响应可以用dos的int33中断来实现;键盘响应可以用bioskey函数;你的功能都很好实现.我以前都做过,需要的话找出来给你.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:太平冰水 回复日期:2002-11-30 21:58:39
<br>内容:看看王示元编的“C语言图形界面编程”
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:东海藏龙 回复日期:2002-12-01 18:46:14
<br>内容:好啊,塞翁,你找出来,我看看,谢谢了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:塞翁 回复日期:2002-12-02 01:04:38
<br>内容:关于鼠标的例子<BR>//////////////////////////////////////<BR>int mouse(int x)<BR> {<BR>&nbsp;&nbsp;union REGS in,out;<BR>&nbsp;&nbsp;in.x.ax=x;<BR>&nbsp;&nbsp;int86(0x33,&amp;in,&amp;out); /*int33h是DOS关于鼠标的中断,具体参数可以查手册*/<BR>&nbsp;&nbsp;return(out.x.bx);<BR>&nbsp;&nbsp;}<BR><BR>int mouse_pos()<BR> {<BR>&nbsp;&nbsp;union REGS in,out;<BR>&nbsp;&nbsp;in.x.ax=3;<BR>&nbsp;&nbsp;int86(0x33,&amp;in,&amp;out);&nbsp;&nbsp;&nbsp;&nbsp; /*返回鼠标的坐标*/<BR>/*&nbsp;&nbsp;gotoxy(5,1);<BR>&nbsp;&nbsp;printf("%3d , %3d",out.x.cx,out.x.dx);*/<BR>&nbsp;&nbsp;if(out.x.cx&gt;=263&amp;&amp;out.x.cx&lt;=267&amp;&amp;out.x.dx==80)/*根据鼠标的坐标画不同颜色的圆*/<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;setcolor(4);<BR>&nbsp;&nbsp;&nbsp;&nbsp;circle(265,80,1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return(1);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp;else<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;setcolor(15);<BR>&nbsp;&nbsp;&nbsp;&nbsp;circle(265,80,1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return(0);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp;}<BR><BR> main()<BR> {<BR>&nbsp;&nbsp;initialize();<BR>&nbsp;&nbsp;mouse(1);<BR>&nbsp;&nbsp;for(;;)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(mouse_pos())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(mouse(3))<BR>&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;restorecrtmode();<BR>&nbsp;&nbsp; }<BR><BR> void initialize()<BR> {<BR>&nbsp;&nbsp;int drive=DETECT,mode=0;<BR>&nbsp;&nbsp;initgraph(&amp;drive,&amp;mode,"d:\\tc");<BR>&nbsp;&nbsp;clearviewport();<BR>&nbsp;&nbsp;fp_hzk=open("d:\\pdos\\chs24.fon",O_RDONLY|O_BINARY);<BR>&nbsp;&nbsp;if(fp_hzk==-1)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;outtextxy(3,3," Error in open CCLIB ! ");<BR>&nbsp;&nbsp;&nbsp;&nbsp;exit(1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:塞翁 回复日期:2002-12-02 01:16:42
<br>内容:关于键盘;(刚才忘了,鼠标例子中关于打开字库文件fp_hzk的一段你要注释掉)<BR>Fn和箭头等键的编码有扩充码,用getch取不到的,参考下面例子:))<BR>===============================================<BR> int key1=0,key2;<BR>&nbsp;&nbsp;while(key1!=13)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*如果不是回车*/<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(key1==27)return(0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*如果是ESC*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(bioskey(1)==0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*等待按任意键*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;key1=key2=bioskey(0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*返回键的编码*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;key1=key1&amp;0xff;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*取低8位的普通编码*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;key2=key2&amp;0xff?0:key2&gt;&gt;8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*取高8位的扩充编码*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(key2==72||key2==80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*是上或下箭头*/<BR>&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*一段上下键移动菜单的程序*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putimage(x,y,buf1,COPY_PUT);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(key2==72)y=y==b+18?b+ii*18:y-18;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(key2==80)y=y==b+ii*18?b+18:y+18;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getimage(x,y,x+kk+81,y+18,buf1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putimage(x,y,buf1,NOT_PUT);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:东海藏龙 回复日期:2002-12-02 09:00:51
<br>内容:哎呀,忘了问了,REGS和int86()和bioskey()是什么呀,在哪里能查到?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:塞翁 回复日期:2002-12-02 10:57:22
<br>内容:REGS是一种数据类型;<BR>int86是TC调用dos中断的函数;<BR>bioskey是TC调用bios键盘处理的函数;<BR>都是TC的标准用法;你看帮助文件应该都有(F1?很久没用TC了:)))
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:litian 回复日期:2002-12-18 15:47:08
<br>内容:使用int86之类的函数,还要注意不要忘了包含的头文件。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?