Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Дефолтовый Фонт


Автор: ShurikA 6.8.2006, 12:44
Каким  образом можно достать обьект (CFont) такой какой в данный момент установлен?
То есть тот фонт которым будет отображаться техт в CDC если я ничего не меняю...

Автор: xTr1m 6.8.2006, 13:59
Ну есть такой способ
Код

CFont *font;
font = dc.GetCurentFont();
LOGFONT *log
font->GetLogFont(log);

Ну а в log потом есть все парметры шрифта

Автор: ShurikA 6.8.2006, 14:39
сделал вот так:
Код

//Load default font and load logfont to text manager
CDC *dc = this->GetDC();
CFont *tmpFont = dc->GetCurrentFont();
LOGFONT logFont;
tmpFont->GetLogFont(&logFont);
textMgr->SetLogFont(logFont);
delete tmpFont;
this->ReleaseDC(dc);


Ругается...

Автор: xTr1m 6.8.2006, 15:23
Ругается вот из-зи этого 
Код

delete tmpFont;


Тут ты удаляешь шрифт, который используется в данный момент, поэтому когда ты снова вызываешь
Код

CFont *tmpFont = dc->GetCurrentFont();

то возникает еррор

delete tmpFont; - убери (не бойся никаких утечек памяти не будет)

Автор: vinter 6.8.2006, 17:18
Цитата

Тут ты удаляешь шрифт, который используется в данный момент, поэтому когда ты снова вызываешь

CFont *tmpFont = dc->GetCurrentFont();    

то возникает еррор

Это тут причем?Еррор возникает потому что delete надо писать если было new.. тут new нигде нету поэтому он освобождает непойми чего...

Автор: xTr1m 6.8.2006, 19:35
Ну спорить конечно не буду, однако, в данном случае delete удаляет область в памяти, на которую ссылается указатель. Указатель указывает, на шрифт используемый по умолчанию. Кроме того, если тут нет new  - это не значит, что delete нельзя использовать ИМХО

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)