如何繪製自定義邊框,其實我試圖繪製1像素邊框但失敗了,我們如何實現這一點? 我曾嘗試this.but失敗。我試過這樣,它工作正常,當窗口沒有子窗口..在我的情況下我的窗口上有3個子窗口在這種情況下,我正在閃爍。如何在win32中繪製自定義邊框?
case WM_NCACTIVATE :
{
if(TRUE == wParam)
{
stateofWindow = true;
InvalidateRect(hwnd,NULL,true);
}
else if(FALSE == wParam)
{
stateofWindow = false;
InvalidateRect(hwnd,NULL,true);
}
}
break;
case WM_NCCALCSIZE :
{
if (true == wParam)
{
return 0;
}
}
break;
case WM_PAINT:
{
HDC hcd = NULL;
PAINTSTRUCT ps;
hcd = BeginPaint(hwnd,&ps);
HPEN hPen = CreatePen(PS_SOLID, 1, RGB(165,165,165));;
SelectObject(hcd, hPen);
RECT rcClientRect = {0};
GetClientRect(hwnd,&rcClientRect);
//GetWindowRect(hwnd,&rcClientRect);
if(FALSE == stateofWindow)
{
MoveToEx(hcd,rcClientRect.left,rcClientRect.top,NULL);
LineTo(hcd,rcClientRect.right-1,rcClientRect.top);
LineTo(hcd,rcClientRect.right-1,rcClientRect.bottom-1);
LineTo(hcd,rcClientRect.left,rcClientRect.bottom-1);
LineTo(hcd,rcClientRect.left,rcClientRect.top);
}
else
{
HPEN hPen1 = CreatePen(PS_SOLID, 1, RGB(255,0,0));;
SelectObject(hcd, hPen1);
MoveToEx(hcd,rcClientRect.left,rcClientRect.top,NULL);
LineTo(hcd,rcClientRect.right-1,rcClientRect.top);
LineTo(hcd,rcClientRect.right-1,rcClientRect.bottom-1);
LineTo(hcd,rcClientRect.left,rcClientRect.bottom-1);
LineTo(hcd,rcClientRect.left,rcClientRect.top);
}
EndPaint(hwnd,&ps);
}
break;
一般來說,做自己的非客戶繪畫是一個壞主意。 (僅僅因爲你*可以*做某事並不意味着你*應該*)。 –
謝謝你的回答。我曾嘗試過,但沒有工作。 – sindhu