Re[4]: Набор символов для шрифта
От: DeeoniS  
Дата: 24.10.07 16:46
Оценка:
Здравствуйте, Аноним, Вы писали:



А>Насколько я помню, все 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, то эффекта ноль...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.