Господа, всем привет!
Столкнулся с такой проблемкой. Ситуация следующая, приложение полностью написано на чистом АПИ, необходимо при выводе на экран строки менять для пары слов шрифт...Делаю так:
Ситуации возникают разные — то вообще текст не выводиться мелким фонтом, то выводиться вся строка. Такое ощущение возникает, что шрифт не успевает меняться. Вот собственно и вся трабла. Жду ваших предложений, господа
PD>Как я понимаю, тебя интересует, какой шрифт сейчас в контексте ?
И да и нет. В данный момент проблема все равно в другом — для пары фраз фонт не меняется почему-то. В TextOut должна выводится как раз пара слов, но не выходит
PD> Убери эту странную проверку и используй GetCurrentObject.
PD> HFONT hCurFont = GetCurrentObject(hDC, OBJ_FONT); PD> if(hFont == m_stFont.m_hBigFont ) PD> SelectFont(hDC, m_stFont.m_hSmallFont);
Здравствуйте, -AdyOS-, Вы писали:
AOS>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Как я понимаю, тебя интересует, какой шрифт сейчас в контексте ? AOS>И да и нет. В данный момент проблема все равно в другом — для пары фраз фонт не меняется почему-то. В TextOut должна выводится как раз пара слов, но не выходит
У тебя логика невнятная. Ты выбираешь новый шрифт для того. чтобы проверить, какой текущий, потом выбираешь другой, если надо. Измени на то, что я посоветовал и проверь, что будет.
PD>У тебя логика невнятная. Ты выбираешь новый шрифт для того. чтобы проверить, какой текущий, потом выбираешь другой, если надо. Измени на то, что я посоветовал и проверь, что будет.
Здравствуйте, -AdyOS-, Вы писали:
AOS>Господа, всем привет! AOS>Столкнулся с такой проблемкой. Ситуация следующая, приложение полностью написано на чистом АПИ, необходимо при выводе на экран строки менять для пары слов шрифт...Делаю так:
AOS>
AOS> ...
AOS>
AOS>Ситуации возникают разные — то вообще текст не выводиться мелким фонтом, то выводиться вся строка. Такое ощущение возникает, что шрифт не успевает меняться. Вот собственно и вся трабла. Жду ваших предложений, господа
Вообще трудно до конца разобраться без работающего примера.
Вот, пока, глянь на такой примерчик, это чем-нибудь похоже на то, что ты пытаешься сделать?:
void myWriteFormattedText ( HDC inHDc, RECT * rc )
{
static char * s_Line [] =
{
"Mary had a little lamb",
"Its fleece was white as snow",
"And everywhere Mary went",
"The lamb was sure to go",
0
};
for(int nLine=0;s_Line[nLine];nLine++)
{
myPrintText(inHDc,rc,s_Line[nLine],nLine*64,nLine,nLine*2);
}
}
int myPrintText ( HDC inHDc, RECT * inRc, char * inLine, int inY, int inStartSmall, int inNumSmall )
{
HFONT _oldFont;
RECT rc;
_oldFont = (HFONT)SelectObject(inHDc,theBigFont);
SetRect(&rc,inRc->left,inRc->top+inY,inRc->left,inRc->bottom);
DrawTextEx(inHDc,inLine,inStartSmall,&rc,DT_LEFT|DT_TOP|DT_NOPREFIX|DT_SINGLELINE|DT_CALCRECT,0);
DrawTextEx(inHDc,inLine,inStartSmall,&rc,DT_LEFT|DT_TOP|DT_NOPREFIX|DT_SINGLELINE,0);
SelectObject(inHDc,theSmallFont);
SetRect(&rc,rc.right,inRc->top+inY,rc.right,inRc->bottom);
DrawTextEx(inHDc,inLine+inStartSmall,inNumSmall,&rc,DT_LEFT|DT_TOP|DT_NOPREFIX|DT_SINGLELINE|DT_CALCRECT,0);
DrawTextEx(inHDc,inLine+inStartSmall,inNumSmall,&rc,DT_LEFT|DT_TOP|DT_NOPREFIX|DT_SINGLELINE,0);
SelectObject(inHDc,theBigFont);
SetRect(&rc,rc.right,inRc->top+inY,rc.right,inRc->bottom);
DrawTextEx(inHDc,inLine+inStartSmall+inNumSmall,strlen(inLine+inStartSmall+inNumSmall),&rc,DT_LEFT|DT_TOP|DT_NOPREFIX|DT_SINGLELINE|DT_NOCLIP,0);
SelectObject(inHDc,_oldFont);
return 0;
}
case WM_PAINT:
{
...
EndPaint(hWnd, &ps);
ReleaseDC(hWnd, hdc); <--это зачем?
}
Здравствуйте, -AdyOS-, Вы писали:
AOS>Господа, всем привет! AOS>Столкнулся с такой проблемкой. Ситуация следующая, приложение полностью написано на чистом АПИ, необходимо при выводе на экран строки менять для пары слов шрифт...Делаю так:
AOS>
AOS>Ситуации возникают разные — то вообще текст не выводиться мелким фонтом, то выводиться вся строка. Такое ощущение возникает, что шрифт не успевает меняться. Вот собственно и вся трабла. Жду ваших предложений, господа