У меня есть CTabCtrl на закладках которого расположены разные окошки, мне нужно, чтобы у контролов (точнее у CheckBox'ов, статического текста и т.п.) как и у окна задний фон был прозрачным (т.к. используя XP-стили по-умолчанию у закладок Tab'а своеобразная заливка отображается (ну плавная смена цвета)). У окна я удаляю задний фон просто вызывая WM_ERASEBKGND, а вот у контролов в OnCtlColor задний фон прозрачным не становится (а становится белым). Я так понимаю, что все это из-за того что я удалил задний фон у окна, но как по-другому это осуществить не понимаю, "помогите кто-чем может =)"
для большей ясности попытаюсь привести часть кода, вот, примерно, как я делаю.
в файле mybasedlg.cpp
Здравствуйте, _Stash, Вы писали:
_S>У меня есть CTabCtrl на [...] своеобразная заливка отображается (ну плавная смена цвета)). _S> [...] _S>в файле mydlg.cpp я обрабатываю ON_WM_ERASEBKGND() чтобы удалить задний фон: _S>
_S> BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)
_S> {
_S> // может здесь надо как-то более правильно это делать?-)
_S> return TRUE;
_S> }
_S>
Столкнувшись с этой проблемой, я просто посмотрел с помощь SPY, чем обмениваются контролы, и дальше закрашивал фон с помощью WM_PRINTCLIENT, отправляя его Tab-control-у.
А еще есть библиотечка — UxTheme.dll — и там фукнкци DrawThemeBackground(Ex)
С уважением,
Заливочкин Евгений
Re: Удаление фона у контр-в, расположенных на CTabCtrl (XP-с
Здравствуйте, _Stash, Вы писали:
_S>У меня есть CTabCtrl на закладках которого расположены разные окошки, мне нужно, чтобы у контролов (точнее у CheckBox'ов, статического текста и т.п.) как и у окна задний фон был прозрачным (т.к. используя XP-стили по-умолчанию у закладок Tab'а своеобразная заливка отображается (ну плавная смена цвета)).
Здравствуйте, Master Gekus, Вы писали:
MG>Столкнувшись с этой проблемой, я просто посмотрел с помощь SPY, чем обмениваются контролы, и дальше закрашивал фон с помощью WM_PRINTCLIENT, отправляя его Tab-control-у.
спасибо за ответ,
простите чайника, но нельзя ли чуть-чуть более развернуто, к примеру — когда(откуда) мне следует отправлять WM_PRINTCLIENT TabCtrl'у (я так понял с lParam = PRF_ERASEBKGND), а то у меня че-то не получается . (Я уже почти все перепробовал а в spy++ все равно WM_PRINTCLIENT посылается с PRF_CLIENT и фиг знает когда Может можно как-то через WindowProc культурно менять lParam?
MG>А еще есть библиотечка — UxTheme.dll — и там фукнкци DrawThemeBackground(Ex)
у DrawThemeBackground для меня слишком высокие требования да и вроде проще кажется просто задний фон удалить
Re[2]: Удаление фона у контр-в, расположенных на CTabCtrl (X
С ума сойти — получилось! Спасибо большое за ссылку на uxtheme.lib/uxtheme.h (я в h-шке посмотрел код ETDT_USETABTEXTURE) и подключился без проблем к dll-ке =)
Re[5]: Удаление фона у контр-в, расположенных на CTabCtrl (X
Здравствуйте, _Stash, Вы писали:
_S>С ума сойти — получилось! Спасибо большое за ссылку на uxtheme.lib/uxtheme.h (я в h-шке посмотрел код ETDT_USETABTEXTURE) и подключился без проблем к dll-ке =)
А у меня не получилось!
Линковщик ругается на EnableThemeDialogTexture(GetSafeHwnd(), ETDT_ENABLETAB); типа он protected и все такое...
Почему?..
Как сделал ты? Поделись исходниками!
Здравствуйте, Shergin, Вы писали:
S>Линковщик ругается на EnableThemeDialogTexture(GetSafeHwnd(), ETDT_ENABLETAB); типа он protected и все такое... S>Почему?..
какой еще protected это winapi-шная функция
S>Как сделал ты? Поделись исходниками!
приведи дословно текст ошибки
Re[6]: Удаление фона у контр-в, расположенных на CTabCtrl (X
Здравствуйте, Shergin, Вы писали:
S>Здравствуйте, _Stash, Вы писали:
_S>>С ума сойти — получилось! Спасибо большое за ссылку на uxtheme.lib/uxtheme.h (я в h-шке посмотрел код ETDT_USETABTEXTURE) и подключился без проблем к dll-ке =)
S>А у меня не получилось! S>Линковщик ругается на EnableThemeDialogTexture(GetSafeHwnd(), ETDT_ENABLETAB); типа он protected и все такое... S>Почему?.. S>Как сделал ты? Поделись исходниками!