|
Тема |
Отг: pri mene tova raboti bez problem :) [re: Пламен] |
|
Автор | Tonimir (Нерегистриран) | |
Публикувано | 22.09.00 02:18 |
|
|
Правиш примерно следното: Във конструктора на обекта слагаш: memset(&d_lf,0,sizeof(LOGFONT)); lstrcpy(d_lf.lfFaceName,_T("Courier New")); d_lf.lfCharSet=204; \\ указва че ще използваш кирилица CWindowDC dc(NULL); int cyPixels=dc.GetDeviceCaps(LOGPIXELSY); d_lf.lfHeight=(-1)*MulDiv(12,cyPixels,72);
след което:
void CMainFrame::OnFontButton() { d_lf.lfCharSet=204; \\заради кирилицата CFontDialog* d_pSetFont = new CFontDialog(&d_lf, CF_SCREENFONTS); \\ огледай добре параметрите които трябва да зададеш
if (!d_pSetFont) { AfxMessageBox(_T("Няма повече памет за тази операция !")); return; }
int iRet=d_pSetFont->DoModal(); if (iRet==IDOK) {
CreateNewFont();
}; delete d_pSetFont; }
BOOL CMainFrame::CreateNewFont() { if (d_pFont) delete d_pFont; d_pFont=new CFont();
if (!d_pFont) return FALSE;
d_pFont->CreateFontIndirect(&d_lf);
\\ тук вземаш параметрите на шрифта за пресмяташ височината на редовете и други подобни
CClientDC dc(this); TEXTMETRIC tm; dc.SelectObject(d_pFont); dc.GetTextMetrics(&tm); d_cyLineHeight=tm.tmHeight+tm.tmExternalLeading; d_cxLeftMargin=tm.tmAveCharWidth*2;
return TRUE; }
Най добре погледни в някоя книжка за VC. Там е описано достатъчно подробно.
|
| |
|
|
|