znalazłem na jakiejś innej stronce, że żeby to działało to musisz powiedzieć kompilatorowi że masz starszy windows poprzez wklejenie
#define WINVER 0x0500
teraz już działa, tylko że:
a) znowu jest ramka
b) jak rysuję kwadrat 255,0,255 na ekranie to i tak nie jest przezroczysty
oto mój kod:
HWND hWnd = win_get_window();
SetWindowLongPtr(hWnd, GWL_EXSTYLE, GetWindowLongPtr(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetWindowPos(hWnd, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
MoveWindow(hWnd, 0, 0, 1024,768, TRUE);
SetWindowPos(win_get_window(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
SetLayeredWindowAttributes(hWnd, makecol(255, 0, 255), 0, LWA_COLORKEY);
/edit
kod zmieniłem na
HWND hWnd = win_get_window();
SetWindowLongPtr(hWnd, GWL_STYLE, WS_POPUP | WS_VISIBLE);
SetWindowPos(hWnd, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
MoveWindow(hWnd, 0, 0, 1024,768, TRUE);
SetWindowPos(win_get_window(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
SetLayeredWindowAttributes(hWnd, makecol(255, 0, 255), 0, LWA_COLORKEY);
i ramki już nie ma tak jak powinno być, ale prostokąt 255,0,255 nadal nie jest przezroczysty