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


А>У контролов дефолтный шрифт который получается по GetFont равен NULL.


А>Набор символов задаётся при создании нового шрифта. Если SetFont с новым

А>шрифтом не устанавливает новый шрифт (то есть ни начертания, ни размер, ничего),
А>то скорее всего используется какой-то хитрый субклассинг. То есть переопределяется
А>процедура отрисовки контрола, или вообще стиль "оwnerdraw". А там может быть что угодно хоть по пикселям текст отрисовываться вообще без шрифта...

Вот удалось нарыть исходник движка. Там действительно используется субклассинг, а текст рисуется вроде слебующим кодом:
void DrawTextStyle( HDC hDC, 
                    const RECT* lpRect , 
                    ESkinTextEffect Effect, 
                    DWORD EffectFlags,
                    COLORREF EffectColor, 
                    COLORREF TextColor, 
                    LPCTSTR lpText , 
                    DWORD nCount , 
                    UINT uFlags )
{
     int nSavedDC = SaveDC( hDC );
     
     SetBkMode( hDC , 1 );
     

     if( (EffectFlags&TSF_SHADOW) == TSF_SHADOW )
     {
        RECT rcShadow = *lpRect;
        OffsetRect( &rcShadow , Effect.xoff , Effect.yoff );
        SetTextColor( hDC , EffectColor );
        DrawText( hDC , lpText , nCount , &rcShadow , uFlags );  
     }

     SetTextColor( hDC , TextColor );
     DrawText( hDC , lpText , nCount ,(RECT*)lpRect , uFlags );  
     RestoreDC( hDC , nSavedDC );
}


Так вот, как бы мне так сделать, чтоб все-таки рисовалось тем шрифтом что мне надо в данный момент.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.