Как изменить цвет control в диалоговом окне
От: mhe  
Дата: 29.03.05 14:37
Оценка:
Привожу фрагмент кода:
HBRUSH CDiaLbtnDown::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if ( nCtlColor == CTLCOLOR_EDIT )
{
pDC->SetBkColor( RGB( 255, 255, 0 ) );
return ( m_hbrYellowBrush );
}

if ( nCtlColor == CTLCOLOR_DLG )
{
pDC->SetBkColor( RGB( 255, 0, 0 ) );
return ( m_hbrRedBrush );
}
return ( CDialog::OnCtlColor( pDC, pWnd, nCtlColor ) );
}

Цвет background EDIT изменяется, а цвет DLG не изменяется. Как изменить цвет background самого диалогового окна??? Ответьте, пожалуйста в чём проблема???
Re: Как изменить цвет control в диалоговом окне
От: Mikka77  
Дата: 29.03.05 17:21
Оценка:
Здравствуйте, mhe, Вы писали:

mhe>Привожу фрагмент кода:

mhe>HBRUSH CDiaLbtnDown::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
mhe>{
mhe>if ( nCtlColor == CTLCOLOR_EDIT )
mhe> {
pDC->>SetBkColor( RGB( 255, 255, 0 ) );
mhe> return ( m_hbrYellowBrush );
mhe> }

mhe>if ( nCtlColor == CTLCOLOR_DLG )

mhe> {
pDC->>SetBkColor( RGB( 255, 0, 0 ) );
mhe> return ( m_hbrRedBrush );
mhe> }
mhe>return ( CDialog::OnCtlColor( pDC, pWnd, nCtlColor ) );
mhe>}

mhe>Цвет background EDIT изменяется, а цвет DLG не изменяется. Как изменить цвет background самого диалогового окна??? Ответьте, пожалуйста в чём проблема???


Не надо забывать про вызов функции базового класса, ведь визард не просто так коментарии генерит
Типа можно так:

HBRUSH CDiaLbtnDown::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CDialog::OnCtlColor( pDC, pWnd, nCtlColor);
if ( nCtlColor == CTLCOLOR_EDIT )
{
    pDC->>SetBkColor( RGB( 255, 255, 0 ) );
    return ( m_hbrYellowBrush );
}
 
if ( nCtlColor == CTLCOLOR_DLG )
{
    pDC->>SetBkColor( RGB( 255, 0, 0 ) );
    return ( m_hbrRedBrush );
}
   return hbr;
}

"Количество времени, необходимое для решения задачи, не зависит от того, было это время использовано для решение данной задачи или нет." ©Mikka77
Re[2]: Как изменить цвет control в диалоговом окне
От: mhe  
Дата: 30.03.05 10:14
Оценка:
Здравствуйте, Mikka77, Вы писали:

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


mhe>>Привожу фрагмент кода:

mhe>>HBRUSH CDiaLbtnDown::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
mhe>>{
mhe>>if ( nCtlColor == CTLCOLOR_EDIT )
mhe>> {
pDC->>>SetBkColor( RGB( 255, 255, 0 ) );
mhe>> return ( m_hbrYellowBrush );
mhe>> }

mhe>>if ( nCtlColor == CTLCOLOR_DLG )

mhe>> {
pDC->>>SetBkColor( RGB( 255, 0, 0 ) );
mhe>> return ( m_hbrRedBrush );
mhe>> }
mhe>>return ( CDialog::OnCtlColor( pDC, pWnd, nCtlColor ) );
mhe>>}

mhe>>Цвет background EDIT изменяется, а цвет DLG не изменяется. Как изменить цвет background самого диалогового окна??? Ответьте, пожалуйста в чём проблема???


M>Не надо забывать про вызов функции базового класса, ведь визард не просто так коментарии генерит

M>Типа можно так:

M>
M>HBRUSH CDiaLbtnDown::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
M>{
M>   HBRUSH hbr = CDialog::OnCtlColor( pDC, pWnd, nCtlColor);
M>if ( nCtlColor == CTLCOLOR_EDIT )
M>{
    pDC->>>SetBkColor( RGB( 255, 255, 0 ) );
M>    return ( m_hbrYellowBrush );
M>}
 
M>if ( nCtlColor == CTLCOLOR_DLG )
M>{
    pDC->>>SetBkColor( RGB( 255, 0, 0 ) );
M>    return ( m_hbrRedBrush );
M>}
M>   return hbr;
M>}

M>

M>
Спасибо за помощь. И прошу извинить за не совсем толковый вопрос. Дело в том, что я не совсем правильно инициализировал m_hbrRed/YellowBrush
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.