Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: CList
Показать сообщение отдельно

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Уффф, еле откопал решение той своей проблемы. Извините за задержку.
Код: Выделить весь код
 
if (_winver == 1034) 
    ViewFont.CreateFont(14, 0, 0, 0, 400, 0, 0, 0, 204, 3, 2, 1, 49, "Courier New"); 
else 
    ViewFont.CreateFont(14, 0, 0, 0, 400, 0, 0, 0, 0, 3, 2, 1, 49, "Courier New");
Обратите внимание на замену CharSet с 0 на 204. ИМХО, Вам следует сделать что-то похожее. Для этого будем исходить из того, что в системе есть нужный Вам шрифт (он же есть в CEdit). При создании CList, значение CharSet по умолчанию (т.е. 0) дает некорректное отображение шрифта. Надо найти все возможные CharSet'ы и выбрать нужный. Для этого проведём нумерацию шрифтов.
Код: Выделить весь код
... 
//Где-то в файле-имплементейшене Вашей формы CSomeMyDlgWithCList 
... 
int CALLBACK FontFunc( 
    const LOGFONT *lplf,     // pointer to logical-font data 
    const TEXTMETRIC *lptm,  // pointer to physical-font data 
    DWORD dwType,            // font type 
    LPARAM lpData            // pointer to application-defined data 
) 
{ 
    if (lplf && (strcmp(lplf->lfFaceName, "Courier New") == 0) { 
        acutPrintf("\n"); 
        acutPrintf("%i\n", lplf->lfHeight); 
        acutPrintf("%i\n", lplf->lfWidth); 
        acutPrintf("%i\n", lplf->lfEscapement); 
        acutPrintf("%i\n", lplf->lfOrientation); 
        acutPrintf("%i\n", lplf->lfWeight); 
        acutPrintf("%i\n", lplf->lfItalic); 
        acutPrintf("%i\n", lplf->lfUnderline); 
        acutPrintf("%i\n", lplf->lfStrikeOut); 
        acutPrintf("CharSet: %i\n", lplf->lfCharSet); 
        acutPrintf("%i\n", lplf->lfOutPrecision); 
        acutPrintf("%i\n", lplf->lfClipPrecision); 
        acutPrintf("%i\n", lplf->lfQuality); 
        acutPrintf("%i\n", lplf->lfPitchAndFamily); 
        acutPrintf("%s\n", lplf->lfFaceName); 
    } 
    return 1; 
} 
... 
BOOL CSomeMyDlgWithCScrollView::OnInitDialog() 
{ 
    CFont FontOfCList; 
   FontOfCList.CreateFont(14, 0, 0, 0, 400, 0, 0, 0, 0, 3, 2, 1, 49, "Courier New"); 
    m_SomeCList.SetFont(&FontOfCList, TRUE); 
    ... 
    HDC hdc = ::GetDC(m_hWnd); long Param = 0; 
    EnumFonts(hdc, "Courier New", &FontFunc, Param); 
    ... 
}
После появления диалога на экране в stdout будут выведены все варианты начертания "Courier New". Простым перебором с записью перечисленных возможных CharSet в CreateFont добейтесь нужного (правильного) начертания. Надеюсь, я всё более-менее понятно объяснил. Только замените ещё acutPrintf на printf, что ли...

Отправлено: 08:25, 23-04-2004 | #3

Название темы: CList