Привет всем
Столкнулся с непонятным поведением программы. Создаю (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);
...
Только предположения:
Может кнопку создать через CreateWindowEx?
Может среди параметров BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE, и др. есть противоречия?
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"Tahoma"); // <--- Tahoma - истинно юникодный шрифт