如何获取任意窗口中的控件的位置,返回坐标vc的

如何获取任意窗口中的控件的位置,返回坐标vc的,第1张

有几种方法实现:

1创建一个桌面大小的"透明窗体",并且边框设为0。这样窗口坐标就是桌面坐标,在自己程序的消息循环中捕获鼠标消息就行了。QQ、RTX的"屏幕截图"功能就是这样实现的。

2使用SetWindowsHookEx捕获WH_MOUSE、WH_GETMESSAGE消息。并将SetWindowsHookEx的第四个参数设置为NULL,捕获全局的消息。然后在第二个参数的回调函数中调用CallNextHookEx,以及监听鼠标消息。程序关闭后,别忘记调用UnhookWindowsHookEx。还有就是程序要写在DLL中,因为系统会把它注入到其它进程中去捕获消息的。可以参考网上SetWindowsHookEx实现键盘记录的例子,实现鼠标记录。

3驱动中Inline Hook Mouclass鼠标类驱动的MouseClassServiceCallback函数,获得鼠标输入。

建议使用1、2中的一种方法。没必要开发驱动,这里只是介绍有几种方法可以获得鼠标全局点击事件。

来自:>

1 利用findwindow函数,通过窗体的标题(caption)来获取窗体的句柄

2 再利用SetWindowPos函数,利用窗体句柄来设置一个窗体的位置。。。

你可以把一个外部窗口移动摆放在任何位置。。。。。自然就知道它的位置了

#include "stdioh"

#include "windowsh"

void main()

{

// 获取活动窗口

    HWND h=GetForegroundWindow();

printf("0x%X\n",h);

// 获取窗口标题

char text[200];

GetWindowText(h,text,200);

printf("%s\n",text);

// 获取屏幕鼠标坐标

POINT pt;

GetCursorPos(&pt);

printf("%d %d\n",ptx,pty);

// 获取窗口鼠标坐标

ScreenToClient(h,&pt);

printf("%d %d\n",ptx,pty);

}

设置窗口在屏幕的位置可使用以下函数:

move(int x,int y)

move(QPoint p)

窗口的位置是相对于父窗口的,已包括标题栏的高度和边框的宽度。

setGeometry(int x,int y,int w,int h)

setGeometry(QRect r)

setGeometry()可同时设置窗口的位置和尺寸,与move()不同,x,y的值不包括题栏的高度和边框的宽度。所以,如果执行setGeometry(0,0,500,200),窗口的标题栏和边框在屏幕之外,而无法显示在屏幕上。

注意:

原点位置左上角。x 轴向右,y轴向下。

获取窗口位置的函数有:

x():获取窗口的x轴位置;

y():获取窗口的y轴位置;

pos():返回包含x,y轴位置的QPoint实例;

geometry():返回包含x,y轴位置以及窗口宽、高的QRect实例;这些值不包括标题栏的高度和边框的宽度。

frameGeometry():返回的参数与geometry()相同,但包括标题栏的高度和边框的宽度且要在显示之后调用才有效。

例如:

要让窗口显示在屏幕中央,就需要知道屏幕的尺寸。可调用静态函数QApplicationdesktop()来获取代表桌面的QDesktopWidget 对象。

再通过调用QDesktopWidget类的函数得到相应值:

width():屏幕宽度的像素值;

height()::屏幕高度的像素值;

screenGeomtry():返回整个屏幕的位置和尺寸的QRect对象;

availableGeomtry():返回屏幕可用区域的位置和尺寸的QRect对象,即扣除任务栏的区域。

例1:

例2:

你在本对话框类中用GetWindowRect

肯定只能获得本窗口的啊

::GetWindowRect(

),

第一个参数是目标窗口的HWND

(注意前面有两个冒号)

RECT rectWindow;

BOOL GetWindowRect(hwnd,&rectWindow);

第一个是窗体的句柄,第二个参数填矩形的指针。

之后这个矩形rectWindow就是窗口的大小和位置了。

如果还要设置窗口位置的话,要使用SetWindowPos。这个函数功能太多,写不过来,具体用法百度百科上有。

分成两个问题,到底哪个你不会?

Winform里多个窗体之间如何传递变量?

Winform里如何获取窗体相对于桌面(屏幕)的坐标?

以上就是关于如何获取任意窗口中的控件的位置,返回坐标vc的全部的内容,包括:如何获取任意窗口中的控件的位置,返回坐标vc的、在易语言中知道一个窗口的地址怎么获取其位置、VB 如何获取外部程序的窗口位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9539910.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存