Не увеличивается размер шрифта в CStatic
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 06.06.18 07:52
Оценка:
Я создал на диалоговом окне надпись IDC_STATIC1 типа CStatic, которой соответствует переменная m_IDC_STATIC1.
Я хочу увеличить размер шрифта в этом элементе. Для этого я написал код в функции OnInitDialog:

memset(&lf,0,sizeof(lf));
lf.lfHeight = 30;
lf.lfWidth = 10;
lf.lfWeight = FW_NORMAL;
lf.lfCharSet = ANSI_CHARSET;
lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
lf.lfQuality = PROOF_QUALITY;
lf.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN;
wcscpy(lf.lfFaceName,L"MS Sans Serif");
font1.CreateFontIndirectW(&lf);
m_IDC_STATIC1.SetFont(&font1);


но у меня почему-то размер шрифта остаётся прежним--каком и был.

Я попытался решить проблему по-другому--создал класс CMyStatic, являющийся потомком класса CStatic, в котором я переопределил метод OnPaint:

int  CMyStatic::OnPaint()
{
    CString  mystr;
    LOGFONT  lf;
    CFont  ft;

    CDC *pDC = this->GetDC();
    this->GetWindowTextW(mystr);
    memset(&lf,0,sizeof(lf));
    lf.lfHeight = 30;
    lf.lfWidth = 10;
    lf.lfWeight = FW_NORMAL;
    lf.lfCharSet = ANSI_CHARSET;
    lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
    lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
    lf.lfQuality = PROOF_QUALITY;
    lf.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN;
    wcscpy(lf.lfFaceName,L"MS Sans Serif");
    ft.CreateFontIndirectW(&lf);
    pDC->SelectObject(&ft);
    pDC->TextOutW(0,0,mystr);
    return 0;
}


а в функции OnInitDialog я вместо кода, приведённого выше (в начале моего сообщения), написал:

m_IDC_STATIC1.RedrawWindow();


Однако и в этом случае результат тот же--размер шрифта не увеличивается.

Что нужно сделать чтобы решить эту проблему--чтобы шрифт в этом компоненте m_IDC_STATIC1 увеличивался и по высоте, и по ширине?
1613 г. = 2024 г.
Re: Не увеличивается размер шрифта в CStatic
От: SаNNy Россия  
Дата: 06.06.18 07:58
Оценка: 4 (1)
https://social.msdn.microsoft.com/Forums/ru-RU/3a09dde8-7c57-42cb-b538-e2ca048d18dd/how-to-change-cstatic-label-control-size-as-per-font-and-text-changed-on-it?forum=vcmfcatl
Re[2]: Не увеличивается размер шрифта в CStatic
От: Amygdala Россия  
Дата: 06.06.18 08:14
Оценка:
Здравствуйте, SаNNy, Вы писали:

Блиин, да неужели ж MFC все еще такая дубовая, что это делается не через дизайнер, а через код? Мдяя...
Re[3]: Не увеличивается размер шрифта в CStatic
От: SаNNy Россия  
Дата: 06.06.18 08:36
Оценка: +1
Здравствуйте, Amygdala, Вы писали:

A>Здравствуйте, SаNNy, Вы писали:


A>Блиин, да неужели ж MFC все еще такая дубовая, что это делается не через дизайнер, а через код? Мдяя...


а МFC Microsoft практически не развивает, она такая же как и много лет назад.
Re: Не увеличивается размер шрифта в CStatic
От: Maniacal Россия  
Дата: 06.06.18 10:16
Оценка: +1
Здравствуйте, RussianFellow, Вы писали:

RF>Однако и в этом случае результат тот же--размер шрифта не увеличивается.

RF>Что нужно сделать чтобы решить эту проблему--чтобы шрифт в этом компоненте m_IDC_STATIC1 увеличивался и по высоте, и по ширине?

Я уже сталкивался с этой проблемой лет 10 назад. Переменная font1 должна быть объявлена как статическая или являться членом класса, потому как SetFont сохраняет только указатель на неё, но не делает копию данных.
Re[2]: Не увеличивается размер шрифта в CStatic
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 06.06.18 12:37
Оценка:
Здравствуйте, SаNNy, Вы писали:

SNN>https://social.msdn.microsoft.com/Forums/ru-RU/3a09dde8-7c57-42cb-b538-e2ca048d18dd/how-to-change-cstatic-label-control-size-as-per-font-and-text-changed-on-it?forum=vcmfcatl


Спасибо, заработало!

Но у меня есть ещё один вопрос--как изменить цвет текста в этом m_IDC_STATIC1?

Я создал класс
CMyStatic : public CStatic

, в котором я переопределил метод OnPaint:

CMyStatic::OnPaint()
{
    CPaintDC  dc(this);
    CRect  rc;
    GetClientRect(rc);
    CString  str;
    dc.GetWindowText(str);
    dc.SetTextColor(RGB(255,0,0));
    dc.DrawText(str,&rc,DT_CENTER);
}


Шрифт отображается высоким (40) и широким (10), как я его и задал, но отображается он чёрным цветом, а не красным.
Как сделать так, чтобы текст отображался красным цветом?
1613 г. = 2024 г.
Re[3]: Не увеличивается размер шрифта в CStatic
От: SаNNy Россия  
Дата: 06.06.18 14:45
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Шрифт отображается высоким (40) и широким (10), как я его и задал, но отображается он чёрным цветом, а не красным.

RF>Как сделать так, чтобы текст отображался красным цветом?

https://stackoverflow.com/questions/1636590/mfc-change-text-color-of-a-cstatic-text-control
Re: Не увеличивается размер шрифта в CStatic
От: Evgeniy Skvortsov Россия  
Дата: 06.06.18 17:30
Оценка:
Здравствуйте, RussianFellow, Вы писали:

Ты же уже задавал такие вопросы
И про шрифт и про цвет, я даже ответы давал с примером кода
Re[2]: Не увеличивается размер шрифта в CStatic
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 07.06.18 01:49
Оценка:
ES>Ты же уже задавал такие вопросы
ES>И про шрифт и про цвет, я даже ответы давал с примером кода

Однако ты сходу те ответы найти не можешь, если бы мог, ты бы привёл гиперссылку. Вот и топикстартер не может.
Re[2]: Не увеличивается размер шрифта в CStatic
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 07.06.18 13:51
Оценка:
Здравствуйте, Evgeniy Skvortsov, Вы писали:

ES>Здравствуйте, RussianFellow, Вы писали:


ES>Ты же уже задавал такие вопросы

ES>И про шрифт и про цвет, я даже ответы давал с примером кода

Всё, нашёл, спасибо!

http://rsdn.org/forum/mfc/6670316.1
Автор: Evgeniy Skvortsov
Дата: 18.01.17
1613 г. = 2024 г.
Re[3]: Не увеличивается размер шрифта в CStatic
От: Evgeniy Skvortsov Россия  
Дата: 07.06.18 20:50
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Однако ты сходу те ответы найти не можешь, если бы мог, ты бы привёл гиперссылку. Вот и топикстартер не может.


Я и не собирался. Форум MFC мертвый, тут что-то найти, два-три клика назад.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.