hasherfrog |
23-04-2004 08:25 205794 |
Уффф, еле откопал решение той своей проблемы. Извините за задержку.
Код:
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, что ли...
|