用c语言模仿windows界面和接收esc之类的功能键的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c语言模仿windows界面和接收esc之类的功能键的问题相关的知识,希望对你有一定的参考价值。
我想用c语言模拟windows界面,我想设置显示模式为vga,然后正常打印字符串等等,但是有一个问题,这个时候用printf和scanf还可以吗?是不是只有8025模式才可以用printfscanf啊?也就是说如何在图形显示模式下打印和接收标准输入输出?用什么函数?语法是怎样的?
还有就是如何接收esc键、back键、tab键、回车键、f123456··的按下?
我用#define ESC 27
getch(c);
if(ESC==c)
···
无法接收到。
我听说了一个bioskey函数,可以用来接收这样的按键,那么请问一下具体应该怎么用呢?具体。。。具体。。。
#include<conio.h>
#include<dos.h>
#include<bios.h>
#define ESC 283
#define UP 18432
#define DOWN 20480
#define LEFT 19200
#define RIGHT 19712
void main()
int key;
while(key!=ESC)
printf("wait for keypress...\n");
sleep(1);
key = bioskey(0);
switch(key)
case ESC:printf("you have press ESC...\n");break;
case UP:printf("you have press UP...\n");break;
case DOWN:printf("you have press DOWN...\n");break;
case LEFT:printf("you have press LEFT...\n");break;
case RIGHT:printf("you have press RIGHT...\n");break;
default:break;
bioskey函数介绍
函数原型:int bioskey (int cmd)
说明:bioskey()的函数原型在bios.h中
bioskey()完成直接键盘操作,cmd的值决定执行什么操作。
cmd = 0:
当cmd是0,bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。
cmd = 1:
当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。
cmd = 2:
当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。
字节位 含义
0 右边Shift键状态
1 左边Shift键状态
3 Ctrl键状态
4 Alt键状态
5 ScrollLock键状态
6 NumLock键状态
7 CapsLock键状态
8 Insert键状态
字节位为1表示该键被按下,为0表示松开。
参考资料:http://zhidao.baidu.com/question/27032676.html?fr=qrl3
参考技术A getch只能接收字符模仿qq界面实现(WTL)
前面对于界面用哪一种我试过用duilib,但是老感觉和MFC差距有点多,终于发现WTL的库能够实现我的所有界面功能,几天的努力终于搞定界面的重写。还是见我的成果吧:
1登录界面:
2主界面:
3.主界面的下拉菜单
4.托盘:
5.聊天主界面:
6.服务器后台基本不变(但是增加对多字节的处理)
唉,说句感慨,互联网+、大数据和物联网让java开发越来越吃香,c++越来越难做了,我的口号是坚持自己作为一个c的忠粉的信念。(希望c/c++的那些大神们赶紧出点物联网时代的对策吧,不然JAVA就一统天下了)。
以上是关于用c语言模仿windows界面和接收esc之类的功能键的问题的主要内容,如果未能解决你的问题,请参考以下文章
我用c语言写了一个小的计算器程序,但是我想给这个程序做一个windows界面,