Witam,
maluję ramkę edita w WM_NCPAINT. I jest wszystko OK. Ale gdy ustawię przezroczystość okna przez SetLayeredWindowAttributes to ramka jest źle rysowana. Wygląda to tak jakby rozmiar ramki był równy rozmiarowi samego pola edycyjnego.
Kod w WM_NCPAINTa:
case WM_NCPAINT:{
RECT strect;
HDC hdc = GetDCEx(hwnd, (HRGN)wParam, DCX_WINDOW | DCX_INTERSECTRGN | 0x10000); // ostatnia flaga jest nieudokumentowana - znalazlem na necie, bez niej nie dziala
GetWindowRect(hwnd, &strect);
strect.right -= strect.left;
strect.bottom -= strect.top;
Graphics graph(hdc);
LinearGradientBrush linGrBrush(
Point(0, 0),
Point(0, strect.bottom), //0, strect.bottom),
0xFF00FF00,
0xFFFF0000);
graph.FillRectangle(&linGrBrush, 0, 0, strect.right, 2);
graph.FillRectangle(&linGrBrush, 0, strect.bottom - 2, strect.right, strect.bottom - 2);
graph.FillRectangle(&linGrBrush, 0, 2, 2, strect.bottom - 2);
graph.FillRectangle(&linGrBrush, strect.right - 2, 2, 2, strect.bottom);
ReleaseDC(hwnd, hdc);
}return 0L;
Nie wiem czy to GDI+, czy co. Wiecie może dlaczego SetLaye.. psuje to?