У меня есть класс создающий hBitmap, я пытался создать класс который бы возвращал Bitmap.
У меня это не вышло. Как передавать созданный Bitmap в функции? Возможно ли это?
Мой код:
bool SearchToRegion(wchar_t* templateName, wchar_t nameClassWindow[100], Point& pt_center, Point startP, int Widht, int Height)
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Color clr, clr_main;
int countpxMax = 0, countpx = 0;
Bitmap bmpTemplate(LoadHbitmapFromFile(templateName), NULL);
countpxMax = bmpTemplate.GetHeight() * bmpTemplate.GetWidth();
bmpTemplate.GetPixel(0, 0, &clr);
GDI_SearchToTrinity GDI(nameClassWindow, startP, Widht, Height);
Bitmap bmpLauncher(GDI.hBitmap, NULL);
bmpLauncher.Save(L"D:\\trinity.bmp", &bmp);
bmpTemplate.Save(L"D:\\template.bmp", &bmp);
for (int y = 0; y < bmpLauncher.GetHeight() && countpx != countpxMax; y++) //int x = 0; x < bmpLauncher.GetWidth(); x++
for (int x = 0; x < bmpLauncher.GetWidth() && countpx != countpxMax; x++) //int y = 0; y < bmpLauncher.GetHeight(); y++
{
bmpLauncher.GetPixel(x, y, &clr_main);
if (clr.GetValue() == clr_main.GetValue() && countpx != countpxMax)
{
countpx = Comparison_two_bmp(templateName, GDI.hBitmap, x, y);
}
}
if (countpx == countpxMax)
{
RECT rc;
GetWindowRect(FindWindow(nameClassWindow, NULL), &rc);
SetForegroundWindow(FindWindow(nameClassWindow, NULL));
SetCursorPos(rc.left + pt_center.X, rc.top + pt_center.Y);
return true;
}
else
return false;
}
int Comparison_two_bmp(wchar_t* templateName, HBITMAP hBmp, int x, int y)
{
Color clr_t, clr_main;
int CountPx = 0;
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Bitmap bmpTemplate(LoadHbitmapFromFile(templateName), NULL);
Bitmap bmp(hBmp, NULL);
for (int y_t = 0; y_t < bmpTemplate.GetHeight(); y_t++)
for (int x_t = 0; x_t < bmpTemplate.GetWidth(); x_t++)
{
bmp.GetPixel(x + x_t, y + y_t, &clr_main);
bmpTemplate.GetPixel(x_t, y_t, &clr_t);
if (clr_t.GetValue() == clr_main.GetValue())
CountPx++;
else
return CountPx;
}
return CountPx;
}