鼠標操作c語言,c++鼠標操作

本文目錄一覽:

c語言如何實現控制鼠標

可以,需要調用windowsAPI函數。

頭文件windows.h。

簡單思路:

通過GetStdHandle獲取標準輸入句柄。

再通過ReadConsokeInput將輸入信息存儲到結構體類型INPUT_RECODE變量中。

再通過判斷,截取到鼠標電擊的事件。

具體API函數、參數、功能還有很多。需要網上找資料可以學。

我這裡就簡單寫一個,鼠標點擊控制台任意位置,並在該位置打印字符串。

#include stdio.h

#include windows.h

int main()

{

    HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE); // 獲取標準輸入設備句柄

    INPUT_RECORD inRec;

    DWORD res;

    COORD p0;

    while(1)

    {

        ReadConsoleInput(hInput, inRec, 1, res);

        if (inRec.EventType == MOUSE_EVENT  inRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) //鼠標左鍵

        {

            p0.X=inRec.Event.MouseEvent.dwMousePosition.X;

            p0.Y=inRec.Event.MouseEvent.dwMousePosition.Y;

            SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);

            printf(“你在這裡點擊的左鍵\n”);

        }

    }

    return 0;

}

如何用c語言來實現鼠標移動。

#include stdio.h

int main (void)

{

    SetCursorPos(1,1);

    return 0; 

}

C語言怎麼實現鼠標操作

VOID keybd_event( BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD dwExtraInfo ); 4個參數都是輸入參數。 bVk:鍵名,例如: VK_NUMPAD7,VK_BACK, VK_TAB,VK_SHIFT,VK_F1,。。。 keybd_event(VK_MENU,0xb8,0 , 0); — 按下Alt 鍵 keybd_event(VK_MENU,0xb8,KEYEVENTF_KEYUP,0); — 放開 Alt 鍵 (複位,彈上來) === 下面程序模擬按 notepad 編輯器。等於C語言 system(“notepad”); 彈出 記事本。

C語言下怎麼用鼠標啊

/*這個我確實不會,直接找了一篇你看下,估計有所參考*/

#include dos.h

#include bios.h

#include malloc.h

#include stdlib.h

#include stdio.h

#include “graphics.h”

#define R 15 /*鼠標的形態*/

void initgr(void) /* BGI初始化 */

{

int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同樣效果 */

initgraph(gd, gm, “”);

}

/*獲取鼠標位置和按鍵,key=1是左鍵,key=2是右鍵*/

void getmouse(int *x,int *y,int *key)

{

union REGS inregs,outregs;

inregs.x.ax=3; /*獲取鼠標位置和狀態也可以用3*/

int86(0x33,inregs,outregs); /*中斷調用*/

*x=outregs.x.cx; /*cx寄存器中存的是橫坐標*/

*y=outregs.x.dx; /*dx寄存器中存的是列坐標*/

*key=outregs.x.bx; /*bx寄存器是按鍵狀態*/

}

void visbilemouse()

{

union REGS inregs,outregs;

inregs.x.ax=0x01; /*顯示鼠標*/

int86(0x33,inregs,outregs);

}

/*按鍵後,返回當前鼠標的x,y和按鍵狀態,知道按鍵後才返回*/

void mouse(int *x,int *y,int *z) /*畫鼠標是利用將一個空矩形存入內存中,然後再在該空矩形中畫鼠標形狀*/

{

int a=0,b=0,c=0,a_old=0,b_old=0; /*a,b的值可以隨便*/

int *ball; /*定義指向內存的存儲圖形的指針*/

ball=malloc(imagesize(a,b,a+R,b+R)); /*返回矩形的大小*/

getimage(a,b,a+R,b+R,ball); /*第一次將圖形(一個空矩形)存入到內存中,內存中存入的是一個空矩形*/

/*setcolor(GREEN);

setlinestyle(0,0,1);

line(a,b,a+R,b+R/2);

line(a,b,a+R/2,b+R);

line(a+R,b+R/2,a+R/2,b+R);

line(a+R*3/4,b+R*3/4,a+R,b+R); 同樣可要可不要,畫鼠標*/

while(c==0) /*直到按鍵後才返回,不按鍵一直循環*/

{

getmouse(a,b,c); /*a,為橫坐標,b,為列坐標,c為按鍵狀態*/

if(a0) a=0; /*保證鼠標左邊不出界*/

if(b0) b=0; /*保證上面不出界*/

if(agetmaxx()-R) a=getmaxx()-R; /*保證右邊不出界*/

if(bgetmaxy()-R) b=getmaxy()-R; /*保證下邊不出界*/

if(a!=a_old || b!=b_old) /*當鼠標移動時*/

{

putimage(a_old,b_old,ball,0); /*在a_old,b_old輸出圖形,用來擦掉原來的鼠標*/

getimage(a,b,a+R,b+R,ball); /*這條語句是將目前鼠標所在位置的圖形存貯到ball裡面試着看着有無這條語句的區別*/

/*不需要在獲取了*/

setcolor(GREEN);

setlinestyle(0,0,1);

line(a,b,a+R,b+R/2);

line(a,b,a+R/2,b+R);

line(a+R,b+R/2,a+R/2,b+R);

line(a+R*3/4,b+R*3/4,a+R,b+R); /*畫鼠標*/

}

a_old=a;b_old=b;

} /*while()結束*/

*x=a;*y=b;*z=c; /*返回按鍵後鼠標的位置*/

putimage(a,b,ball,0); /*將鼠標擦掉,因為存在ball裡面的是一個背景為缺省狀態下的一個空矩形*/

free(ball);

}

/*主要思想是通過getimage,putimage,imagesize圖形的存貯一個當前的圖形來擦拭掉以前的鼠標圖形,也可以用清屏部分屏幕來實現*/

void main()

{

int x,y,z;

initgr();

visbilemouse();

do

{

setcolor(WHITE);

rectangle(175,8,220,25);

outtextxy(180,10,”exit”);

mouse(x,y,z);

if(z==1)

{

setlinestyle(0,0,1);

setcolor(12);

circle(x,y,1);

}

if(z==2)

{setfillstyle(1,BLACK);

bar(0,0,getmaxx(),getmaxy());

}

}while(x175 || x220 || y8 || y25);

closegraph();

}

C語言中怎樣做鼠標編程?

dos模式下需要先加載鼠標驅動程序,然後用調用int33H中斷(好像是的,希望我沒記錯)。很複雜的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/291837.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-25 14:08
下一篇 2024-12-25 14:30

相關推薦

  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • Python代碼實現迴文數最少操作次數

    本文將介紹如何使用Python解決一道經典的迴文數問題:給定一個數n,按照一定規則對它進行若干次操作,使得n成為迴文數,求最少的操作次數。 一、問題分析 首先,我們需要了解迴文數的…

    編程 2025-04-29
  • Python磁盤操作全方位解析

    本篇文章將從多個方面對Python磁盤操作進行詳細闡述,包括文件讀寫、文件夾創建、刪除、文件搜索與遍歷、文件重命名、移動、複製、文件權限修改等常用操作。 一、文件讀寫操作 文件讀寫…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29

發表回復

登錄後才能評論