程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> TEST TC CURSOR鼠標操作(TC)

TEST TC CURSOR鼠標操作(TC)

編輯:關於C語言

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");
這三句話的執行效率太低

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved