アプリの位置から、赤い四角形を表示させる
最近プログラミングを始めました。よろしくお願いいたします。素人なので、知識が誤っていることがあります、その時はご指摘ください。
今回は、アプリに位置から赤い四角形を表示させるアプリを作ります。
以下コードになります。
#include <iostream>
#include <Windows.h>
void draw(HDC hdc, RECT* rect, HBRUSH hBrushCube);
int main() {
HWND TargetWnd = FindWindow("Notepad", "無題 - メモ帳");
if (TargetWnd != NULL) {
std::cout << "success!HWND number = " << TargetWnd << std::endl;
HBRUSH hBrush = CreateSolidBrush(RGB(255, 0, 0));
HDC hdc = GetDC(TargetWnd);
RECT rect = { 10,10,100,100 };
while (true) {
if (GetAsyncKeyState(VK_F1) & 0x8000) {
std::cout << "detected F1 botton! end process..." << std::endl;
break;
};
draw(hdc, &rect, hBrush);
};
}
else {
std::cout << "failed!HWND number = " << TargetWnd << std::endl;
}
return 0;
}
void draw(HDC hdc,RECT *rect, HBRUSH hBrushCube) {
FillRect(hdc, rect, hBrushCube);
}
・HWND Targetでwindow handleを取得。今回はメモ帳にしています。関数はFindWindowを使っています。https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-findwindowaを見ると返り値は成功すると、メモ帳のHWNDを返し、失敗するとNULLを返します。
・if文では、HWNDが成功しているか失敗しているかで分岐させています。
・成功すると、デバイスコンテキスト(HDC)と今回の四角形を定義するRECT構造を設定します。RECT構造はhttps://learn.microsoft.com/ja-jp/windows/win32/api/windef/ns-windef-rectにあります。
・設定したら、FillRectでさっき設定したHDCとRECTを引数にして呼び出します。FillRectでは、HDCはGetDC関数でどのウィンドウに描画するかを決めたので、そのウィンドウの左上の座標からの描画が始まります。
結果は以下のようになります。
この記事が気に入ったらサポートをしてみませんか?