读书人

问一个api函数有关问题

发布时间: 2012-04-03 12:38:19 作者: rapoo

问一个api函数问题
#include<stdio.h>
#include<windows.h>
#include <stdlib.h>
#include<conio.h>
#define le 30
void sna(int *m,int *n,int tf)
{
int k;
k=*m;
*m=*n;
*n=k;
if(tf==0)
*n=-*n;
else
*m=-*m;

}int main()
{ HANDLE cono;
HANDLE coni;
COORD sn={0,0},sw={60,0};
CONSOLE_CURSOR_INFO cur;
INPUT_RECORD keyb;
int di=1,dj=0;
WORD ke;
cur.dwSize=1;
cur.bVisible=FALSE;
cono=GetStdHandle(STD_OUTPUT_HANDLE);
coni=GetStdHandle(STD_INPUT_HANDLE);
SetConsoleCursorInfo(cono,&cur); //设置为不显示光标
SetConsoleCursorPosition(cono,sw);

while(1)
{

if(kbhit())
{ ReadConsoleInput(coni,&keyb,1,NULL);
printf(" %d ->%d",keyb.EventType,keyb.Event.KeyEvent.wVirtualKeyCode);
if(keyb.EventType==KEY_EVENT)
{ printf(" %d -> %d ",keyb.EventType,keyb.Event.KeyEvent.wVirtualKeyCode);

if(VK_UP==keyb.Event.KeyEvent.wVirtualKeyCode&&dj==0)
sna(&di,&dj,-di+1);
else if(VK_LEFT==keyb.Event.KeyEvent.wVirtualKeyCode&&di==0)
sna(&di,&dj,dj+1);
else if(VK_DOWN==keyb.Event.KeyEvent.wVirtualKeyCode&&dj==0)
sna(&di,&dj,di+1);
else if(VK_RIGHT==keyb.Event.KeyEvent.wVirtualKeyCode&&di==0)
sna(&di,&dj,-dj+1);
else if( VK_ESCAPE==keyb.Event.KeyEvent.wVirtualKeyCode)
return 0;
else
printf("%d ",keyb.Event.KeyEvent.wVirtualKeyCode);
}
}

sn.X=(sn.X+di+le)%le;
sn.Y=(sn.Y+dj+le)%le;

FillConsoleOutputCharacter(cono,'#',sizeof('#'),sn,NULL);

Sleep(500);


}
return 0;
}
当有键盘输入时这个程序里面的 ReadConsoleInput(coni,&keyb,1,NULL);为什么没有起作用?



[解决办法]
单步调试看看

读书人网 >C++

热点推荐