Столкнулся с непонятным поведением программы. Создаю (MinGW + CodeBlocks, НЕ MSVS) простейший проект Win32, создающий одно-единственное окошко. И добавляю в него вот такой код:
#define UNICODEВ результате получаю то, что показано во вложении:
...
// Создаем кнопку
HWND myButton = CreateWindow(L"BUTTON", L"Отмена",
BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE,
50, 50, 125, 25, hwnd, 0, hThisInstance, NULL);
// Отключаем (дизейблим) ее
EnableWindow(myButton, false);
HFONT myFont = CreateFont(-11, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE, L"MS Sans Serif");
// назначаем этот шрифт всем оконным элементам
if(myFont)
{
SendMessage(myButton, WM_SETFONT, (WPARAM)myFont, 0);
}
// Показываем окно
ShowWindow (hwnd, nCmdShow);
...
Однако, если закомментировать строку с EnableWindow, то текст отображается как положено:
Попробовал сделать аналогичный проект на Дельфях - абсолютно то же самое, в disable отсекается часть надписи. ОС - WinXP SP3. Причем программа, скомпилированная у меня, прекрасно показывает весь текст под Вистой, например. А на соседнем WinXP SP2 съедается еще больше текста, видно только первые 3 буквы. Зато в Enabled-состоянии отображается везде одинаково правильно.
Это я что-то упускаю, или что может быть? Куда можно копать вообще?