c语言鼠标光标显示函数 C语言操作鼠标函数

求C语言隐藏光标函数的详细解释

#includewindows.h

我们提供的服务有:成都网站设计、网站建设、外贸网站建设、微信公众号开发、网站优化、网站认证、遂川ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的遂川网站制作公司

voidhidecursor()

{

console_cursor_infocursor_info={1,0};

setconsolecursorinfo(getstdhandle(std_output_handle),cursor_info);

}

函数和结构体都在windows.h中定义,函数用法简单就不说了。

console_cursor_info结构体定义如下:

typedefstruct

{dworddwsize;

boolbvisible;//为0时光标不可见

}console_cursor_info,*pconsole_cursor_info;

vc,mingw中均没问题。

不明白直接hi。

光标定位函数怎么用

C语言里面有gotoxy(x,y)函数来定位光标位置;

但在VC下面没有conio.h,也就没有gotoxy(),只在tc,bc中才有

下面是别人构造的一个:

includewindows.h

#includeiostream

using namespace std;

void gotoxy(int x, int y) {

COORD c;

c.X = x - 1;

c.Y = y - 1;

SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);

}

int main()

{

gotoxy(20,12);

std::cout"Hello world!"endl;

return 0;

}

其中的COORD和SetConsoleCursorPosition定义在wincon.h中~

SetConsoleCursorPosition用于在相应的设备设置光标的位置,两个参数分别是设备句柄和光标位置结构。GetStdHandle定义在winbase.h上用于获得标准输入、输出、错误输出句柄

当参数标识为STD_OUTPUT_HANDLE时获得标准输出句柄

善于使用搜索引擎,搜到的

c语言:鼠标和键盘函数的相关问题

首先最简单的但可以后台处理的有SendMessage()PostMessage()

发送鼠标,

键盘消息,

这个百度一搜n多了

然后中等级的模拟就是keyboard_eventmouse_event了这个比较用的比较多,

给个例子你

模拟键盘点击void

Press(UINT

key)

{

keybd_event(key,MapVirtualKey(key,

0),0,0);

keybd_event(key,MapVirtualKey(key,

0),KEYEVENTF_KEYUP,0);

}

模拟

鼠标左键单击mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

这里注意调用

keyboard_event

的时候一定要用MapVirtualKey

网上大部分的代码都是没用的,

这个函数时获取

硬件扫描码

的先说下keybd_event();函数的参数keybd_event(要模拟按下的虚拟按键码,

虚拟按键码对应的硬件扫描码,0,0);网上的代码大部分都有

虚拟按键码,

当然你运行大部分都是没问题的,

因为对于一般的程序而言是没问题的但有的程序为了防止

外挂

或者

防止其他程序恶意修改什么的,会对

鼠标键盘

消息进行检测,

如果检测到没有硬件扫描码会拒绝执行的

然后还有比较高级的就是SendInput模拟了void

OnSendCharCode(unsigned

short

unicode

=

0,unsigned

short

vcode

=

0,bool

bDown

=

false,bool

bUnicode

=

true);

void

OnSendCharCode(unsigned

short

unicode,unsigned

short

vcode,bool

bDown,bool

bUnicode)

{

unsigned

short

uNum

=

0;

//

v-code

Clicked

INPUT

事件设定

KEYBDINPUT

kDown;

KEYBDINPUT

kUp;

if(!bUnicode)

{

//

'A';

(Virtual

Code

只有大写),

要输入小写

//

Enter:

13,

Backspace:

8,

Up:38

kDown.wVk

=

kUp.wVk

=

vcode;

kDown.wScan

=

kUp.wScan

=

::MapVirtualKey(kDown.wVk,0);

//kDown.dwFlags

=

KEYEVENTF_EXTENDEDKEY;

kUp.dwFlags

=

KEYEVENTF_KEYUP;

}else{

kDown.wVk

=

kUp.wVk

=

0;

kDown.wScan

=

kUp.wScan

=

unicode;

kDown.dwFlags

=

KEYEVENTF_UNICODE;

kUp.dwFlags

=

KEYEVENTF_UNICODE

|

KEYEVENTF_KEYUP;

}

//

建立

KeyDown

事件

建立

KeyUP

事件

INPUT

inputKeyDown,

inputKeyUP;

inputKeyDown.type

=

inputKeyUP.type

=

INPUT_KEYBOARD;

//

指定

input

keyboard

kDown.time

=

kUp.time

=

0;

//

the

system

will

provide

its

own

time

stamp.

kDown.dwExtraInfo

=

kUp.dwExtraInfo

=

(WORD)::GetMessageExtraInfo();

inputKeyDown.ki

=

kDown;//

指定

键盘

属性结构

inputKeyUP.ki

=

kUp;

//

指定

键盘

属性结构

//

v-code

Clicked

INPUT

事件设定完成

//

INPUT

事件送到

Root

视窗,

系统会根据视窗位置,送给目标视窗

if(bDown)

{

INPUT

event[1]

=

{inputKeyDown};

uNum

=

::SendInput(1,event,

sizeof(INPUT));

}else{

INPUT

event[2]

=

{inputKeyDown,inputKeyUP};

uNum

=

::SendInput(2,event,

sizeof(INPUT));

}

}

//例子:

OnSendCharCode(0,VK_SHIFT,true,false);

OnSendCharCode(0,'A',false,false);

OnSendCharCode(0,VK_SHIFT,false,false);

OnSendCharCode(0,'A',false,false);

//KEYEVENTF_UNICODE

能区分大小写

OnSendCharCode('A');

OnSendCharCode('a');

不过还是有很多游戏,它是用

DirectX

技术去做的,这些大部分对他们没用所以还有最最最高级的模拟,

就是

对硬件驱动程序的模拟这个有个外国人写的

winio.h

的头文件,

有兴趣可以去学,

一般用不到的,

c语言中如何实现随意移动光标输出字符

函数名:gotoxy

原型:extern void gotoxy(int x, int y);

用法:#include system.h

功能:将光标移动来到指定自位置

说明:gotoxy(x,y)将光标移动到指定行y和列x。设置光标到文本屏幕的指定位置,其知中参数x,y为文本屏幕的坐标,gotoxy(0,0)将光标移动到屏幕左上角。

扩展资料:

用法举例

#include conio.h

int main(void)

{ /*gotoxy()的用法*/

//clrscr(); //清除文本模式的窗口

gotoxy(2,1);//在文本窗口中设置光标用(列,行)

cprintf("Hello world");//送格式化输出至屏幕

getch();

return 0;

}

参考资料来源:百度百科-gotoxy

c语言如何获取鼠标键盘信息

我估计你分数给的在高也没人回答。来个这样的代码太麻烦了。而且百度金币用处也不大。

不过,我可以写几个鼠标函数给你参考一下。

首先了解一下鼠标的中断。

_ax=0x01

表示显示光标

_ax=0x02

停止显示光标

_ax=0x03

读取光标位置与案件

_ax=0x04

设置光标位置

所以啊。根据这四个中断,有以下几个函数

----------------------------------------------------

void

mouseon(void)//鼠标光标显示

{

_ax

=

0x01;

geninterrupt(0x33);

}

----------------------------------------------------

void

mouseoff(void)//鼠标光标隐藏

{

_ax

=

0x02;

geninterrupt(0x33);

}

---------------------------------------------------

void

mousesetxy(int

x,int

y)//设置当前位置

{

_cx

=

x,

_cd

=

y;

_ax

=

0x04;

geninterrupt(0x33);

}

---------------------------------------------------

int

leftpress(void)//鼠标左键按下

{

_ax

=

0x33;

geninterrupt(0x33);

return(_bx1);

}

-----------------------------------------------------

鼠标右键的应该也会了吧。不过要return(_bx2);

-----------------------------------------------------

void

mousegetxy(void)//得到当前位置

{

_ax

=

0x33;

geninterrupt(0x33);

mousex

=

_cx;

mousey

=

_dx;

}

---------------------------------------------------------------

最好要复制粘贴,打字打得手疼。


网站标题:c语言鼠标光标显示函数 C语言操作鼠标函数
分享地址:http://scyanting.com/article/hgedcs.html