易语言能实现取指定窗口的左边和顶边吗

易语言能实现取指定窗口的左边和顶边吗,第1张

当然可以

要我出邮箱 加分 谢谢

////////////////////////////////////////////////////////////

版本 2

局部变量 句柄, 整数型

局部变量 文本, 文本型

局部变量 矩形, 矩形_

句柄 = 取指定点窗口句柄_ (取鼠标水平位置 (), 取鼠标垂直位置 ())

如果真 (句柄 = 标签1取窗口句柄 ())

标签1标题 = “此窗口为我本身 不加运算”

返回 ()

如果真结束

文本 = 取空白文本 (255)

取窗口标题_ (句柄, 文本, 255)

取窗口矩形_ (句柄, 矩形)

标签1标题 = “X:” + 到文本 (取鼠标水平位置 ()) + “Y:” + 到文本 (取鼠标垂直位置 ()) + #换行符

标签1标题 = 标签1标题 + “窗口标题:” + 文本 + #换行符

标签1标题 = 标签1标题 + “左边:” + 到文本 (矩形左边) + #换行符

标签1标题 = 标签1标题 + “顶边:” + 到文本 (矩形顶边) + #换行符

标签1标题 = 标签1标题 + “右边:” + 到文本 (矩形右边) + #换行符

标签1标题 = 标签1标题 + “底边:” + 到文本 (矩形底边) + #换行符

取窗口矩形 (扫雷窗口句柄 \ 信息)‘这代码是你写的还是网上下的?

你‘写成下面这样子就行了

取窗口矩形 (扫雷窗口句柄 ,信息)

下面是“取窗口矩形”API,可以无视

版本 2

DLL命令 GetWindowRect, 整数型, "user32dll", , , 返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。

参数 hWnd, , , 要获取矩形的窗口句柄

参数 lpRect, RECT, , 矩形数据指针(易会自动传指针的)

版本 2

数据类型 RECT 成员 l左边

成员 t顶边

成员 r右边

成员 b下边

版本 2

子程序 __启动窗口_创建完毕

局部变量 RECT, RECT

输出调试文本 (GetWindowRect (取窗口句柄 (), RECT))输出调试文本 (RECTl左边, RECTt顶边, RECTr右边 - RECTl左边, RECTb下边 - RECTt顶边)

' 右边-左边=窗口实际宽度

' 下边-顶边=窗口实际高度

楼上的回答简直是胡扯。

我觉得你对于这几个函数的理解已经很正确了。

msdn的解释很清晰很正确,没有任何疑义,和你的理解是一致的。

呵呵,我觉得只要解释一下第一个执行为啥左上角是(0,0),你的所有疑问就没有了。

我想请问一下,你是不是在对话框初始化的时候,也就是OnInitialDlg里面执行的以上代码?我相信答案肯定是“是的”。

在对话框初始化的时候,窗口是先有可能放置在屏幕左上角,然后在这个初始化函数结束后,窗口被移动到屏幕正中。

也就是说,你在对话框初始化过程中获取窗口位置的时候,窗口确实就在左上角!

如果你想验证一下我的结论,不妨在程序中设置一个按钮,在这个按钮的消息响应中,再次执行这几句代码,然后你观察一下结果,是不是就完全符合你的预期了^_^

欢迎采纳!

GetWindowsRect获取的是窗口矩形范围,其中RECT的left和top就是窗口左上角的坐标,也就是你所说的窗口位置

GetWindowsRect返回的是屏幕坐标

楼上的应该是ScreenToClient,将屏幕坐标转换为窗口坐标

ClientToScreen是将窗口坐标转换为屏幕坐标

HBITMAP holdbitmap,hbitmap;

HDC hdc,hscreendc,hmemdc;

hdc=GetWindowDC(hwnd);//获得整个hwnd指向的窗口的DC

GetWindowRect(hwnd,&rect);//获得窗口矩形

hscreendc=CreateDC("DISPLAY",NULL,NULL,NULL);//获得整个屏幕的设备DC

hmemdc=CreateCompatibleDC(hdc);//创建与设备DC兼容的内存DC

hbitmap=CreateCompatibleBitmap(hscreendc,GetDeviceCaps(hdcScreen,HORZRES),GetDeviceCaps(hdcScreen,VERTRES)); //创建与屏幕DC兼容的位图

holdbitmap=(HBITMAP)SelectObject(hmemdc,hbitmap);//将hbitmap指向的位图选入内存DC,返回值为原来的位图holdbitmap,先保存下来后面恢复

BitBlt(hmemdc,0,0,rectright-rectleft,rectbottom-recttop,hscreendc,0,0,SRCCOPY);//将设备DC的图象复制到内存DC,这样就把屏幕图象保存到hbitmap所指向的BITMAP结构体中了

点击按钮后,再用BitBlt显示出来:

case WM_COMMAND:

holdbitmap=(HBITMAP)SelectObject(hmemdc,hbitmap);//将保存图象的hbitmap选进内存DC

BitBlt(hdc,0,0,rectright-rectleft,rectbottom-recttop,hmemdc,0,0,SRCCOPY);//将内存DC的图象显示到窗口上

以上注意hbitmap变量的作用范围

代码如下:

DLL命令定义表:

版本 2

DLL命令 取窗口矩形_, 整数型, "user32", "GetWindowRect", , $(b)

参数 窗口句柄, 整数型

参数 矩形区域, 矩形_

自定义数据类型表:

版本 2

数据类型 矩形_, , $(a)RECT

成员 左边, 整数型, , , left

成员 顶边, 整数型, , , top

成员 右边, 整数型, , , right

成员 底边, 整数型, , , bottom

程序集封装函数

版本 2

子程序 提取外部程序窗口矩形信息, 逻辑型

参数 目标窗口句柄, 整数型

参数 保存矩形信息, 矩形_, 参考

返回 (选择 (取窗口矩形_ (目标窗口句柄, 保存矩形信息) = 0, 假, 真))

调用封装好的函数进行测试

添加名为:编辑框_运行结果(编辑框控件),测试_按钮(按钮控件)

版本 2

子程序 _测试_按钮_被单击

局部变量 局部_矩形, 矩形_

如果真 (提取外部程序窗口矩形信息 (_启动窗口取窗口句柄 (), 局部_矩形) = 假)

编辑框_运行结果内容 = “提取失败”

返回 ()

如果真结束

编辑框_运行结果内容 = “左边:” + 到文本 (局部_矩形左边) + #换行符

编辑框_运行结果加入文本 (“顶边:” + 到文本 (局部_矩形顶边) + #换行符)

编辑框_运行结果加入文本 (“右边:” + 到文本 (局部_矩形右边) + #换行符)

编辑框_运行结果加入文本 (“底边:” + 到文本 (局部_矩形底边) + #换行符)

注意:以上代码在windows2003系统,E语言51静态版 运行测试正常!

以上解答纯手工实测编写解答!API函数和数据类型直接从E的API助手中导入,确保了其正确性!

以上就是关于易语言能实现取指定窗口的左边和顶边吗全部的内容,包括:易语言能实现取指定窗口的左边和顶边吗、易语言求助:错误(10044): 不能将“RECT”数据转换到“双精度小数型”数据。、各位高手,小弟请教关于GetWindowRect,GetClientRect以及ClientToScreen,ScreenToClient的使用!先谢谢啦等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存