Učím se WinAPI z knížky 1001 Tipů a Triků pro Visual C++. Narazil jsem na tip č. 165 (Vlatní barva pozadí (klienteské oblasti) okna). Je tam napsáno, že pozadí lze nastavit jiý při registraci třídy okna nebo za běhu programu pomocí fce SetClassLongPtr.
S Nastavením při registraci okna nemám problém. Chtěl jsem udělat, aby při stisku pravé šipky se barva pozadí změnila. Koukl jsem se na msdn na syntaxi fce SetClassLongPtr, ale bohužel mi kód nefunguje, ke změně pozadí nedojde, ale program vykonává další příkazy, které následují.
Asi hodinu již hledám všude možně po internetu a nikde jsem nenašel nic, podle čeho by se mi to povedlo udělat. Obracím se tedy na pomoc sem.
Můj kód:
HBRUSH g_hbBarva;
...
case WM_KEYDOWN:
switch(wParam)
{
case VK_RIGHT:
g_hbBarva = CreateSolidBrush(RGB(30, 50, 60));
SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND, (LONG_PTR)g_hbBarva);
break;
}
break;
...