Доброго времени суток!
Использую PropertySheet() для создания визарда.
флаги PROPSHEETHEADER:
psh->dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER | PSH_USECALLBACK | PSH_USEICONID;
Последняя страница страница имеет следующие флаги:
psp->dwFlags = PSP_HIDEHEADER | PSP_USETITLE;
Соответственно — слева страницы будет картинка.
Пытаюсь изменить цвет static text:
LRESULT Success_page::page_proc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
//...
if ( message == WM_CTLCOLORSTATIC )
{
if( (HWND)lParam == GetDlgItem( hwnd, IDC_WARNING_TEXT ) )
{
SetTextColor( (HDC)wParam, RGB(192,32,32) );
SetBkMode( (HDC)wParam, TRANSPARENT );
return (LRESULT)GetStockObject( NULL_BRUSH );
}
}
//...
}
В результате получаю —
http://files.rsdn.ru/65034/propertysheet.png
Как можно добиться белого фона?
Спасибо.
Здравствуйте, Велимир, Вы писали:
В> if( (HWND)lParam == GetDlgItem( hwnd, IDC_WARNING_TEXT ) )
В> {
В> SetTextColor( (HDC)wParam, RGB(192,32,32) );
В> SetBkMode( (HDC)wParam, TRANSPARENT );
В> return (LRESULT)GetStockObject( NULL_BRUSH );
В> }
В> }
В> //...
В>}
В>
В>Как можно добиться белого фона?
В>Спасибо.
SetBkMode( (HDC)wParam, TRANSPARENT ); — прозрачный фон.
Вам нужно OPAQUE вместо TRANSPARENT.
И цвет фона можно установить с помощью SetBkColor()
Мне никогда не нравилась MFC. (c) Charles Petzold
Здравствуйте, econt, Вы писали:
E>SetBkMode( (HDC)wParam, TRANSPARENT ); — прозрачный фон.
E>Вам нужно OPAQUE вместо TRANSPARENT.
E>И цвет фона можно установить с помощью SetBkColor()
пробовал. В таком случае:
SetTextColor( (HDC)wParam, RGB(192,32,32) );
SetBkMode( (HDC)wParam, OPAQUE );
SetBkColor( (HDC)wParam, RGB( 255, 255, 255 ) );
return (LRESULT)GetStockObject( WHITE_BRUSH );
получается вот что —
http://files.rsdn.ru/65034/white-area.png
Красится только часть текста. Но не все поле static text'a
Здравствуйте, Велимир, Вы писали:
В>пробовал. В таком случае:
В>Красится только часть текста. Но не все поле static text'a
Посмотрите
http://cprime.110mb.com/lesson/0103/3-6.php Может быть поможет.
Фон нужно менять при обработке сообщения WM_ERASEBKGND. Но обрабатывать его нужно внутри оконной процедуры окна STATIC.
Мне никогда не нравилась MFC. (c) Charles Petzold
Здравствуйте, Велимир, Вы писали:
В>Здравствуйте, econt, Вы писали:
E>>SetBkMode( (HDC)wParam, TRANSPARENT ); — прозрачный фон.
E>>Вам нужно OPAQUE вместо TRANSPARENT.
E>>И цвет фона можно установить с помощью SetBkColor()
В>пробовал. В таком случае:
В>В>SetTextColor( (HDC)wParam, RGB(192,32,32) );
В>SetBkMode( (HDC)wParam, OPAQUE );
В>SetBkColor( (HDC)wParam, RGB( 255, 255, 255 ) );
В>return (LRESULT)GetStockObject( WHITE_BRUSH );
В>
В>получается вот что — http://files.rsdn.ru/65034/white-area.png
В>Красится только часть текста. Но не все поле static text'a
Верните системную кисть
return (LRESULT)GetSysColorBrush(SYSCOLOR_WINDOW);
Только с константами там надо поиграться, может и не SYSCOLOR_WINDOW, а что-то другое — на память не скажу точно.
Здравствуйте, econt, Вы писали:
E>Посмотрите http://cprime.110mb.com/lesson/0103/3-6.php Может быть поможет.
E>Фон нужно менять при обработке сообщения WM_ERASEBKGND. Но обрабатывать его нужно внутри оконной процедуры окна STATIC.
WM_ERASEBKGND совсем не приходит, такое ощущение, что это особенность работы PropertySheet. Т.к. слева от диалога он же как — то выводит картинку...