Подскажите пожалуйста как мне изменить шрифт , который использует моё приложение.
Просто когда изменяю размер окна размер шрифта остаётся прежним получается некрасиво
В обработчик события OnSize() необходимо добавить следующий код:
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfHeight = необходимая высота шрифта;
HFONT hfont = ::CreateFontIndirect(&lf);
CFont* pfont = CFont::FromHandle(hfont);
//здесь нужно установить этот самый шрифт для CView или CWnd,
//вобщем, командой типа .(->)SetFont(pfont);
//здесь ОнСайз()
::DeleteObject(hfont);
Типа усё
Здравствуйте, Live, Вы писали:
L>Подскажите пожалуйста как мне изменить шрифт , который использует моё приложение. L>Просто когда изменяю размер окна размер шрифта остаётся прежним получается некрасиво
А какое приложение, из чего состоит?
Каждый элемент недиалогового приложения имеет свой шрифт.
L>>Это я написал в OnSize CChildMDI и шрифт не меняется , может я что то не так сделал
P>Ну, ежели ты действительно делаешь ::DeleteObject(hfont); как тебе посоветовал предыдущий оратор, то ничего удивительного нет.
Здравствуйте, Ken Keray, Вы писали:
KK>Здравствуйте, Live, Вы писали:
L>>Подскажите пожалуйста как мне изменить шрифт , который использует моё приложение. L>>Просто когда изменяю размер окна размер шрифта остаётся прежним получается некрасиво
KK>А какое приложение, из чего состоит? KK>Каждый элемент недиалогового приложения имеет свой шрифт.
MDI приложение. Менять шрифт надо для каждого Child окна и всех элементов которые в нём находятся.
Здравствуйте, Ken Keray, Вы писали:
KK>Здравствуйте, Live, Вы писали:
L>>Подскажите пожалуйста как мне изменить шрифт , который использует моё приложение. L>>Просто когда изменяю размер окна размер шрифта остаётся прежним получается некрасиво
KK>А какое приложение, из чего состоит? KK>Каждый элемент недиалогового приложения имеет свой шрифт.
Мои поиски на эту тему в MSDN остановились на Stock Font Property которое используется в ActiveX, но до конца я так и не разобрался. Может кто нибудь сможет мне в кратце объяснить что такое ActveX и зачем он нужен, ну или хотя бы ссылочку какую-нибудь подкинет
Здравствуйте, Live, Вы писали:
L>Здравствуйте, Ken Keray, Вы писали:
KK>>Здравствуйте, Live, Вы писали:
L>>>Подскажите пожалуйста как мне изменить шрифт , который использует моё приложение. L>>>Просто когда изменяю размер окна размер шрифта остаётся прежним получается некрасиво
KK>>А какое приложение, из чего состоит? KK>>Каждый элемент недиалогового приложения имеет свой шрифт.
L>Мои поиски на эту тему в MSDN остановились на Stock Font Property которое используется в ActiveX, но до конца я так и не разобрался. Может кто нибудь сможет мне в кратце объяснить что такое ActveX и зачем он нужен, ну или хотя бы ссылочку какую-нибудь подкинет
ActiveX — тема отдельная. Смотри про COM, ATL, WTL (сам не знаю пока)
Ты можешь так сделать. Берёшь GetWindow() для первого child-а MDI frame, GetNextWindow() — для всех след. И для каждого вызываешь SetFont(CFont *) подобно тому, как уже писалось выше. Надо только иметь ввиду, что каждое окно может по-разному использовать указатель фонта: одно делает копию объекта по нему, другое хранит лишь указатель, и надеется, что пока оно живо, фонт, на который ссылается оный указатель, не исчезнет в хаосе heap-кучи, третье (плохой случай, я думаю, стандартные окошки таких гадостей не делают) решит, что объект под этим указателем создан специально для него, и, соответственно, только оно имеет право распоряжаться его жизнью и смертью. Так что лучше сначала заведи перенную-фонт в объекте класса фрейма (главного, наверное), инициализируй в конструкторе и показывай её всем дочерним окнам.