Работа со шрифтами и цветом
От: Dmitri  
Дата: 20.05.01 05:14
Оценка:
Помогите пожалуйста. Я изучаю VC++6 самостоятельно и в книгах не нашел описания этой проблемы.
Как изменить шрифт и цвет текста какого — нибудь элемента управления.
Например CStatic или CButton. Возможно для этого надо использовать CtlColor()?
Если мой вопрос не совсем ясен то переформулирую "Как на VC++6 сделать действие аналогичное свойствам .font и .forecolor в VBasic"
Re: Работа со шрифтами и цветом
От: Sasha  
Дата: 20.05.01 11:49
Оценка:
Здравствуйте Dmitri, вы писали:

D>Помогите пожалуйста. Я изучаю VC++6 самостоятельно и в книгах не нашел описания этой проблемы.

D>Как изменить шрифт и цвет текста какого — нибудь элемента управления.
D>Например CStatic или CButton. Возможно для этого надо использовать CtlColor()?
D>Если мой вопрос не совсем ясен то переформулирую "Как на VC++6 сделать действие аналогичное свойствам .font и .forecolor в VBasic"

Обрабатываем сообщение WM_CTLCOLOR:

HBRUSH CT1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if (nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(0,255,0));
pDC->SetBkColor(RGB(255,0,0));
}
return hbr;
}
Цвета подбирай по вкусу, объекти смотри параметр nCtlColor в функции
CWnd::OnCtlColor
Re: Работа со шрифтами и цветом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.01 16:43
Оценка:
А шрифт устанавливается с помощью сообщения WM_SETFONT.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Работа со шрифтами и цветом
От: Dmitri  
Дата: 20.05.01 18:37
Оценка:
Здравствуйте VladD2, вы писали:

VD>А шрифт устанавливается с помощью сообщения WM_SETFONT.


А можно пример? Я такого сообщения в ClassWizard не нашел...
Re[3]: Работа со шрифтами и цветом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.01 19:12
Оценка:
Здравствуйте Dmitri, вы писали:

D>Здравствуйте VladD2, вы писали:


VD>>А шрифт устанавливается с помощью сообщения WM_SETFONT.


D>А можно пример? Я такого сообщения в ClassWizard не нашел...


ClassWizard тут не причем.
Это сообщение посылается окну с помощью функции SendMessage:
// Создаете шрифт…
// и вызываете:
::SendMessage(hWnd, WM_SETFONT, hFont, TRUE /* TRUE — перерисовать */);
На MFC можно и по-другому, но в MFC я не силен, а врать не хочется. Скажу только, что окна в MFC завертываются в класс обертку CWnd и вызов будет выглядеть примерно так:
Wnd.SendMessage(WM_SETFONT …

Если Вы начинающий VC-программист, то позвольте деть пару советов:
1. на 99% вопросов можно найти ответ в MSDN (он поставляется с VC и VS). Прежде чем искать ответ в Internet лучше посмотреть там, это быстрей и эффективней.
2. Не начинайте программирование с MFC. Сначала создайте пару простеньких приложений на голом Win32 API. Без этого Вы не будете понимать, как работает Ваше приложение. MFC – по большому счету является крутой надстройкой над Win API. Из-за большого уровня наследования в MFC очень легко запутаться. Практика с API поможет этого избежать.
3. Если Вы выбрали именно MFC, то ответ лучше искать в соответствующем форуме. Здесь Вам могут или вовсе не ответить или ответить непонятно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.