Здравствуйте, Аноним, Вы писали:
А>Насколько я помню, все GDI функции рисуют тем шрифтом, который выбран в данный момент в текущем конткстк окна.
А>Контролы обчные обязы принимать сообщение WM_SETFONT и в ответ на него устанавливать этот шрифт.
А>
А>LOGFONT lf;
А>.....
А>.....
А>HFONT hFont;
А>hFont = CreateFontIndirect(&lf);
А>SendMessage(hwndControl, WM_SETFONT,(WPARAM) hFont,(LPARAM) LOWORD(TRUE));
А>
А>Если контрол на это не реагирует, то перед вызовом всех тектовых функций можно напрямую самому попытаться
А>выбрать шрифт к том контекстк, где рисуется текст.
А>А>HFONT hFont;
А>hFont = CreateFontIndirect(&lf);
А>hOldFont = SelectObject(hdc,hFont);
А>
А>Все поля в структуре LOGFONT можно посмотреть вызывав например для заведомо нормального контрола дилога с каким-то пользовательским шривтом,
А>сообщение (чем пытаться постичь их смысл читая МСДН проще передрать всё что не интересует)
А>А>HFONT hFont;
А>hFont = (HFONT) SendMessage(hwndControl,WM_GETFONT,0,0);
А> if (hFont==0)return FALSE;
А>GetObject(hFont,sizeof(LOGFONT),&lf);
А>
А>или если выбрали новый шрифт,
А>А>GetObject(hOldFont,sizeof(LOGFONT),&lf);
А>
А>Скорее всего нужно будет повторить все поля а модифицировать только поле lfCharSet
А>Если русский то приминять RUSSIAN_CHARSET
А>если немецкий то по моему ANSI_CHARSET
Подобное я все пробовал... тут вопрос в каком месте вызывать этот код, ибо если делать это перед вызовом SetWindowText, то эффекта ноль...