您的位置:

c语言鼠标定位,鼠标的定位原理

本文目录一览:

用C语言怎么判断鼠标在窗口的位置?

用API函数GetCursorPos()可以得到鼠标现在的位置:

//---------------------------------------------------------------------------

#include stdio.h

#include windows.h

int main(void)

{

POINT pt;

GetCursorPos(pt);

printf("%ld %ld\n",pt.x,pt.y);

return 0;

}

//---------------------------------------------------------------------------

C语言在控制台清屏之后鼠标定位就不行了怎么办

楼主你好。

是因为程序卡在这里了:

Y=(int)pos.Y;

if

(inRec.EventType

==

MOUSE_EVENT

inRec.Event.MouseEvent.dwButtonState

==

FROM_LEFT_1ST_BUTTON_PRESSEDY=3Y=1)

//鼠标左键

break;

这里无法break出来。原因是Y=3Y=1这个条件无法满足。

程序还在调试中。

【旧代码省略】

以上调试程序可以看到只要不system("cls")就可以持续读入鼠标事件,但是只要取消system("cls")的注释,在清屏一次之后就会无法读入鼠标事件,程序卡在ReadConsoleInput处,只能读入键盘和聚焦事件什么的。暂时分析到这里。

我用clrscr()代替system("cls")成功了!(clrscr你可以查查百度百科)

#include

windows.h

#include

conio.h

#include

stdlib.h

#include

stdio.h

#define

PERR(bSuccess,

api){if(!(bSuccess))

printf("%s:Error

%d

from

%s

on

line

%d\n",

__FILE__,

GetLastError(),

api,

__LINE__);}

void

MyCls(HANDLE)

;

void

clrscr(void)

{

HANDLE

hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);

MyCls(hStdOut);

return;

}

void

MyCls(HANDLE

hConsole)

{

COORD

coordScreen={0,0};//设置清屏后光标返回的屏幕左上角坐标

BOOL

bSuccess;

DWORD

cCharsWritten;

CONSOLE_SCREEN_BUFFER_INFO

csbi;//保存缓冲区信息

DWORD

dwConSize;//当前缓冲区可容纳的字符数

bSuccess=GetConsoleScreenBufferInfo(hConsole,csbi);//获得缓冲区信息

PERR(bSuccess,"GetConsoleScreenBufferInfo");

dwConSize=csbi.dwSize.X

*

csbi.dwSize.Y;//缓冲区容纳字符数目

//用空格填充缓冲区

bSuccess=FillConsoleOutputCharacter(hConsole,(TCHAR)'

',dwConSize,coordScreen,cCharsWritten);

PERR(bSuccess,"FillConsoleOutputCharacter");

bSuccess=GetConsoleScreenBufferInfo(hConsole,csbi);//获得缓冲区信息

PERR(bSuccess,"ConsoleScreenBufferInfo");

//填充缓冲区属性

bSuccess=FillConsoleOutputAttribute(hConsole,csbi.wAttributes,dwConSize,coordScreen,cCharsWritten);

PERR(bSuccess,"FillConsoleOutputAttribute");

//光标返回屏幕左上角坐标

bSuccess=SetConsoleCursorPosition(hConsole,coordScreen);

PERR(bSuccess,"SetConsoleCursorPosition");

return;

}

void

main()

{

int

fh();

int

ret;

HANDLE

hInput

=

GetStdHandle(STD_INPUT_HANDLE);;

//

获取标准输入设备句柄

for(;;)

{

printf("请点击鼠标左键\n");

ret

=

fh(hInput);

printf("%d\n",ret);

Sleep(200);

clrscr();

}

}

int

fh(HANDLE

hInput)

{

INPUT_RECORD

inRec;

DWORD

res;

int

Y;

COORD

pos

=

{0,

0};

for(;;)

{

ReadConsoleInput(hInput,

inRec,

1,

res);

pos

=

inRec.Event.MouseEvent.dwMousePosition;

Y=(int)pos.Y;

if

(inRec.EventType

==MOUSE_EVENT

inRec.Event.MouseEvent.dwButtonState

==

FROM_LEFT_1ST_BUTTON_PRESSED){

//鼠标左键

break;

}

}

return

Y;

}

c语言里怎么定位光标

设置CMD窗口光标位置

void setxy(int x, int y)  //x,y为光标座标

{

   COORD coord = {x, y};

   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

c语言鼠标定时点击指定位置

c语言鼠标定时点击指定位置需要模拟鼠标在远程桌面中进行移动。定时模拟点击屏幕坐标位置工具,程序采用c语言编写,可以自定义设置时间,设置屏幕坐标,到时间鼠标会自动根据坐标的位置点击一次。