TEST TC CURSOR鼠標操作(TC)
代碼中用到的鼠標操作的代碼就是用 常用寄存器_AX,_BX,_CX,_DX 來控制的
很想用TC多線程來解決這個問題,但是在網上沒有找到具體的實現方法,難道只有C++中或MS VC中有提供多線程的方法嗎?讓人懊惱不已啊
int main()
{
char szText[20] = "";
for(;;)
{
if(LeftPress())
{
MouseGetXY();
if(MouseX < 0 || MouseX > 800 || MouseY < 0 || MouseY > 600)
printf("Cursor is not in the Active Area of the screen!\n");
else
{
printf("LeftButton Pressed!\n");
sprintf(szText, "cursorX,Y:(%d, %d)\n", MouseX, MouseY);
printf(szText);
}
//sleep(1);
}
if(RightPress())
{
MouseGetXY();
if(MouseX < 0 || MouseX > 400 || MouseY < 0 || MouseY > 300)
printf("Cursor is not in the Active Area of the screen!\n");
else
{
printf("RightButton Pressed!\n");
sprintf(szText, "CursorX,Y:(%d, %d)\n", MouseX, MouseY);
printf(szText);
/*moveto(120,240);*/
textcolor(5);
cprintf("/*RButton Test*/");
printf("\n");
}
//sleep(1);
}
if(kbhit())
{
if(0x011b == bioskey(0))
{
printf("\ntestEnd\n");
break;
}
}
if(!LeftPress() && !RightPress())
continue;
printf("test again:\n");
}
getch();
}
問題:這段代碼在執行左鍵按下 或 右鍵按下時,執行打印語句會打印多次
解決辦法:在其對應的所有語句都執行完畢之後,加一個sleep(1);便可解決。
原因:這個問題應該屬於是多線程輪詢所造成的混亂的問題;
textcolor(6);
textbackground(7);
cprintf("Left and Right button both Pressed!\n");
這三句話的執行效率太低