Windows에서 uxTheme 라이브러리를 사용하여 내 자신의 사용자 지정 컨트롤을 그리는 데 놀고 있는데 왜 내 컨트롤이 (보통) Windows 컨트롤처럼 보이지 않는지 알아낼 수 없습니다.사용자 지정 Windows 컨트롤 그리기 문제
위의 이미지는 표준 Windows 콤보 (위) 및 내 사용자 지정 컨트롤이 콤보 테마 (아래)을 사용하여 그려 보여줍니다 : 내가 사용하고 같은 주제를 사용합니다. 내가 해결할 수없는 것은 컨트롤의 테두리가 표준 컨트롤과 다른 모양과 색상을 갖는 이유입니다. 내 클래스 생성자에서
나는 테마 데이터를 엽니 다
mComboTheme = OpenThemeData(hwnd, L"COMBOBOX");
와 나는 그냥 콤보 상자 구성 요소의 두 부분으로 그리기있어 WM_PAINT에 대한 핸들러 :
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc;
RECT client;
if(GetUpdateRect(hwnd, &ps.rcPaint, false))
{
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &client);
if(IsThemeBackgroundPartiallyTransparent(mComboTheme, CP_BACKGROUND, CBXS_HOT))
{
DrawThemeParentBackground(hwnd, hdc, &ps.rcPaint);
}
DrawThemeBackground(mComboTheme, hdc, CP_BACKGROUND, CBXS_HOT, &client, &ps.rcPaint);
client.left = client.right - 20;
DrawThemeBackground(mComboTheme, hdc, CP_DROPDOWNBUTTONRIGHT, CBXSR_HOT, &client, ps.rcPaint);
EndPaint(*this, &ps);
}
break;
}
어떤 제안 등을 왜이 두 컨트롤이 똑같이 보이지 않는지에 대해 크게 감사 할 것입니다.
감사합니다,
제임스
어쨌든별로 악화되지 않습니다. – BlackBear