在Windows中使用CodeBlocks,我制作了一个游戏脚本,用于读取屏幕像素并根据像素颜色确定值,效果很好。但是当我移动我的游戏画面时,它改变了我从中获取值的像素的坐标。我想我可以使用GetWindowRect
来测量游戏窗口的角落,并从那里获得我需要查看的像素的位置。如果有更好的方法,我会很感激指导。
这是我尝试编译的例子。我得到一个错误," hwnd"没有宣布。但我想" hwnd"是该功能的一部分。我在这里找到了功能描述
https://msdn.microsoft.com/en-us/library/windows/desktop/ms633519(v=vs.85).aspx
#include <windows.h>
int main(){
RECT rect;
if(GetWindowRect(hwnd, &rect))
{
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
}
std::cout<<width<<"\n"<<height;
}
答案 0 :(得分:0)
定义RECT rect后;
然后尝试类似的事情:
HWND hwnd = GetDesktopWindow();
这只是演示使用桌面窗口。实际上,您将使用从其他地方收到的HWND。
答案 1 :(得分:0)
在功能&#34; GetWindowRect(hwnd,&amp; rect)&#34; &#34; HWND&#34;是存储窗口句柄的变量的名称,并且未定义。申报&#34; hwnd&#34;使用 &#34; HWND(变量名);&#34;没有括号。为了能够获得窗口的句柄,您需要使用另一个函数,例如:FindWindow(NULL,TEXT(&#34; WindowName&#34;)); wich将句柄返回到具有该名称的窗口,如果没有找到窗口则返回NULL。拥有一个窗口的有效句柄&#34; rect&#34;这是一个结构,将具有该窗口位置的值。那些价值观将是&#34; rect.top&#34;这是最重要的&#34; y&#34;坐标,&#34; rect.bottom&#34;这是&#34; y&#34;底部坐标,&#34; rect.left&#34;是&#34; x&#34;左坐标,&#34; rect.right&#34;是&#34; x&#34;正确的坐标 Screen Coordinates Image
注意!:示例计算器必须打开并且不能最小化!
示例:
#include <windows.h>
#include <iostream>
int main(){
HWND handleToCalculatorWindow; // Handle to window declared here!
RECT window;
handleToCalculatorWindow = FindWindow(NULL,TEXT("Calculator"));
GetWindowRect(handleToCalculatorWindow , &window); //Coordinates to window!
std::cout<<"Calculator window top coordinate:"
<<window.top<<"\nCalculator window right coordinate:"<<window.right;
}