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


Автор: Rutti 21.12.2004, 14:05
Поместил на PictureControl на Dialog StaticText. Как можно убрать фон у StaticText и изменить цвет букв StaticText?

Автор: Coocky 21.12.2004, 22:22
А можно подробнее,зачем ты так делал?И что ты хочешЬ вообще от такого размещения?

Автор: Rutti 21.12.2004, 22:44
Да что-то типа авторана. Картинка на диалоге, на картинке две кнопки и текст. Вот с текстом и заморочки. Вставил в диалог
Код



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

if (pWnd->GetDlgCtrlID()==IDC_TEST)
{
pDC->SetTextColor(RGB(0,0,255));
pDC->SetBkMode(OPAQUE);
pDC->SetBkColor(RGB(128,0,0));
}
return hbr;
}
Код


Но ничего не меняется. Может не то вставил?

Автор: Coocky 21.12.2004, 22:56
Вроде правильно...Под рукой ничего нет,кроме денег за впремя в Инетклубе smile ,Ща помочь не могу...Стоп,а ID статика сам назначил или по умолчанию оставил....А ну пройдись через Debuger,чему равен уазатель?

Автор: DENNN 22.12.2004, 13:36
Если хочешь, чтоб фон не закрашивал изображение под элементом, переопределяй OnEraseBkgnd. Например так:
Код

BOOL CMyDlgClassName::OnEraseBkgnd( CDC* pDC )
{
   return TRUE;
}


Механизм вызвова BOOL OnEraseBkgnd таков: если после вызова переопределенного метода было возвращено TRUE - значит приложение само выполнило перерисовку фона, если FALSE - значит это необходимо сделать ОС

Автор: Rutti 28.12.2004, 23:10
DENNN

Мой диалог никак не реагирует на твой код. smile

Автор: Coocky 28.12.2004, 23:19
Цитата
Мой диалог никак не реагирует на твой код.

Ты на мой вопрос ответь,если помощи хочешь....

Автор: alien_by 29.12.2004, 10:29
Цитата
Мой диалог никак не реагирует на твой код.

Нужно переопределять этот метод не у диалога, а у твоего статика.

А ещё можно попробовать режим отрисовки бэкгроунда поменять на
pDC->SetBkMode(TRANSPARENT);


Автор: Rutti 9.1.2005, 14:07
Coocky

Просто хочу на картинке написать текст (назначение бутона). Всего то. На этот вопрос?

Автор: chipset 9.1.2005, 14:13
Rutti
Субклассь CStatic.
Добавлено @ 14:14
Т.е: создаешь класс производный от CStatic, переопределяешь нужные функции рисования (OnPaint или как его, забыл уже) и указываешь в пропертисах контрола как класс ответственный за прорисовку.

Автор: Coocky 10.1.2005, 21:57
Цитата
Т.е: создаешь класс производный от CStatic, переопределяешь нужные функции рисования (OnPaint или как его, забыл уже) и указываешь в пропертисах контрола как класс ответственный за прорисовку.

Вот именно.Т.е. создавая класс свой,ты расширяешь его возможности,и получается своими обработками сообщений,ты перекрываешь то,что предлагает тебе стандартное МФС.Ну не сделали они отрисовку статика... smile Сделай сам smile

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