Здравствуйте, Аноним, Вы писали:
А>У контролов дефолтный шрифт который получается по 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 );
}
Так вот, как бы мне так сделать, чтоб все-таки рисовалось тем шрифтом что мне надо в данный момент.