Я хочу обрабатывать сообщения WM_NCPAINT, чтобы нарисовать свою собственную рамку окна. Я написал простой код для рисования прямоугольника, который должен иметь черную рамку вокруг него. Вот код:
LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch(msg){
case WM_NCPAINT:
{
RECT rc;
GetWindowRect(hWnd, &rc);
HDC hDC = GetWindowDC(hWnd);
Rectangle(hDC, 0, 0, rc.right - rc.left, rc.bottom - rc.top);
ReleaseDC(hWnd, hDC);
return TRUE;
}
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
}
return DefWindowProc(hWnd, msg, wParam, lparam);
}
Однако с этим возникла пара проблем. При изменении размера окна по левому или верхнему краю окно сильно мигает по нижнему и правому краям. Вторая проблема заключается в том, что в верхних углах окна есть закругленные углы, где моя роспись, кажется, не проходит. (Это Windows 10). Насколько я понимаю, мерцания быть не должно, так как я рисую окно сразу после получения сообщения WM_NCPAINT, что, похоже, не так. Может ли кто-нибудь сказать мне, что я делаю не так и как избежать этих проблем?
Кстати, вот как выглядят закругленные углы в верхнем левом и верхнем правом углах.