주 창 클라이언트 영역에 탭 컨트롤이있는 C 기반 WinAPI 프로그램을 작성하고 있습니다. 이 탭 컨트롤은 탭에서 어떤 종류의 렌더링 문제가있는 것을 제외하고는 훌륭하게 작동합니다. 탭의 제목이 굵게, unaliased 글꼴 렌더링, 따라서 화면 공간을 많이 낭비됩니다 여기 하는 탭이 기본적으로 다른 모든 응용 프로그램에서 같이 작업은 다음과 같습니다 WinAPI 탭 표시 줄 렌더링
내가 설정하려면이 코드를 사용하여 내 탭 컨트롤 :
RECT rcClient, rcTool, rcTab;
TCHAR tabTitleTmp[256]; // Temp string buffer
HWND hTool = GetDlgItem(hWnd, IDC_MAIN_TOOL);
GetWindowRect(hTool, &rcTool);
int iToolHeight = rcTool.bottom - rcTool.top;
// Get parent's client rect
GetClientRect(hWnd, &rcClient);
// Create tab control
HWND hwndTab = CreateWindowEx(NULL, WC_TABCONTROL, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE,
0, iToolHeight, rcClient.right, rcClient.bottom - iToolHeight, hWnd, (HMENU) IDC_MAIN_TAB,
hInst, NULL);
// Create tab items
TCITEM tie;
tie.mask = TCIF_TEXT | TCIF_IMAGE;
tie.iImage = -1;
tie.pszText = tabTitleTmp;
// Set up tabs
for(int i = 0; i < 8; i++) {
LoadString(hInst, IDC_TAB_GENERAL + i, tabTitleTmp, sizeof(tabTitleTmp)/sizeof(tabTitleTmp[0]));
TabCtrl_InsertItem(hwndTab, i, &tie);
}
누구든지이 문제를 해결할 수 있습니까? 아직 Google에서 찾지 못했지만 WinAPI 자체의 버그 일 수 있다고 생각하기 시작했습니다. 모든 응답 주셔서 감사합니다!
편집 : 컨트롤을 만들기 전에 내 프로그램 시작 부분에서 InitCommonControlsEx()를 호출하여 공통 컨트롤 클래스를 등록합니다.
그래, 맞아! 호기심에서, 이것은 당신이 스스로 발견 한 것입니까, 아니면 M $ docs에 깊이 묻혀 있습니까? –
@TristanSeifert, 내가 오래 전 발견 한 것. 귀하의 스크린 샷을 보았을 때 문제가 무엇인지 즉시 알았습니다. 내 오래된 프로젝트에서'GetStockObject (DEFAULT_GUI_FONT)'를 사용하고있었습니다. 대답을 게시 한 후 MSDN 기사를 읽었으며 'SystemParametersInfo'가 선호되는 방식이므로 편집했습니다. –
@TristanSeifert, 이것은 실제로 대부분의 모든 컨트롤에서 볼 수있는 것, 특히 사용하고있는 것처럼 보이는 정적 라벨입니다. 나는 당신이 당신의 다른 통제에서도이 문제를 보지 않고 있다는 사실에 놀랐습니다. –