2017-10-08 6 views
-4

WindowsでCodeBlockを使用して、画面のピクセルを読み取り、ピクセルの色に応じて値を決定するゲームのスクリプトを作成しました。しかし、ゲーム画面を動かすと、値を取得するピクセルの座標が変更されます。私はGetWindowRectを使ってゲームウィンドウのコーナーを測定し、見ることができるピクセルの位置を得ることができると思います。これを行うより良い方法があれば、私は指針に感謝します。 これはコンパイルしようとする例です。私は "hwnd"が宣言されていないというエラーが出ます。しかし、私は "hwnd"が関数の一部であると考えました。私はRECT四角形のあなたの定義した後、ここに
https://msdn.microsoft.com/en-us/library/windows/desktop/ms633519(v=vs.85).aspxGetWindowRectに渡す必要がある "hwnd"とは何ですか?どうすれば入手できますか?

#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

機能の説明を見つけました。単にデスクトップウィンドウを使用して実証

HWND hwnd = GetDesktopWindow(); 

その後のようなものを試してみてください。実際には、他の場所から受け取ったHWNDを使用します。

0

関数 "GetWindowRect(hwnd、& rect)" "hwnd"はウィンドウへのハンドルを格納する変数の名前で、定義されていません。 "hwnd"を宣言するには "HWND(変数名);"かっこなし。ウィンドウのハンドルを取得するには、別の関数、たとえばFindWindow(NULL、TEXT( "WindowName"));を使用する必要があります。その名前のウィンドウにハンドルを返します。ウィンドウが見つからない場合はNULLを返します。構造体であるウィンドウ "rect"に対する有効なハンドルを持つと、そのウィンドウの位置の値が得られます。これらの値は、上の "y"座標である "rect.top"、 "y"下の座標である "rect.bottom"、 "x"の左座標であるrect.left、 "rect.right" "x"右座標。
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; 
}