Я пишу программу WinAPI на основе C, которая имеет элемент управления вкладкой в клиентской области главного окна. Этот элемент управления вкладками отлично работает, за исключением того, что на вкладках есть какая-то проблема с рендерингом. Названия вкладок отображаются в смелых, unaliased шрифтов, и, следовательно, тратить много экрана недвижимости: Вот что вкладки выглядят, как, по существу, любое другое приложение: WinAPI Tab Bar Rendering
Я использую этот код, чтобы настроить мой контроль таблеток:
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 $? –
@TristanSeifert, что-то, что я обнаружил давно. Я сразу понял, в чем проблема, когда я увидел ваш скриншот. В моих старых проектах я использовал 'GetStockObject (DEFAULT_GUI_FONT)'. После того, как я опубликовал ответ, я вернулся и читал статьи MSDN, и он сказал, что «SystemParametersInfo» является предпочтительным способом, поэтому редактирование. –
@TristanSeifert, это на самом деле то, что вы обычно видите с большинством всех элементов управления, особенно статических меток, которые вы, кажется, используете. Я удивлен, что вы не видите эту проблему на своих других элементах управления. –