Witam, uruchamiam grę w trybie "pełny ekran w oknie", oraz mój program.
Gdy okno gry jest aktywne, wciskam ustalony przycisk(załóżmy załóżmy strzałkę w dół) i i mój program zaczyna wykonywać poniższą funkcje.
void Screen(HWND &uchwyt, int &szerokosc_okna, int &wysokosc_okna )
{
HDC uchwyt_DC = GetWindowDC(uchwyt);
HDC uchwyt_Compatible_DC = CreateCompatibleDC(uchwyt_DC);
HBITMAP uchwyt_bitmapy = CreateCompatibleBitmap(uchwyt_DC, szerokosc_okna, wysokosc_okna);
SelectObject( uchwyt_Compatible_DC, uchwyt_bitmapy);
BitBlt(uchwyt_Compatible_DC, //
0, 0, //tu program sie zatrzymuje
szerokosc_okna, wysokosc_okna, //czeka do momentu zminimalizowania okna gry
uchwyt_DC, //po czym wznawia prace
0, 0, //
SRCCOPY); //
}
Problem w tym, że program zatrzymuje się na funkcji BitBlt i dopiero gdy wyjdę z okienka gry, wznawia prace. Ostatecznie otrzymuje screena z chwili w której naciskam alt+Tab, a nie z momentu naciśnięcia strzałki.
Problem nie występuje jeśli pobiorę uchwyt np. systemowego notatnika.
Czy ktoś może mi powiedzieć dlaczego tak się dzieje?