У меня есть CTabCtrl на закладках которого расположены разные окошки, мне нужно, чтобы у контролов (точнее у CheckBox'ов, статического текста и т.п.) как и у окна задний фон был прозрачным (т.к. используя XP-стили по-умолчанию у закладок Tab'а своеобразная заливка отображается (ну плавная смена цвета)). У окна я удаляю задний фон просто вызывая WM_ERASEBKGND, а вот у контролов в OnCtlColor задний фон прозрачным не становится (а становится белым). Я так понимаю, что все это из-за того что я удалил задний фон у окна, но как по-другому это осуществить не понимаю, "помогите кто-чем может =)"
для большей ясности попытаюсь привести часть кода, вот, примерно, как я делаю.
в файле mybasedlg.cpp
CTabCtrl m_TabCtrl;
TCITEM TabItem;
...
m_TabCtrl.InsertItem( 0, &TabItem );
...
pMyDlg = new CMyDlg;
TabItem.mask = TCIF_PARAM;
TabItem.lParam = (LPARAM)pMyDlg;
m_TabCtrl.SetItem(0, &TabItem);
VERIFY(pMyDlg->Create(CMyDlg::IDD, &m_TabCtrl));
pMyDlg->SetWindowPos(NULL, 2, 22, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
pMyDlg->ShowWindow(SW_SHOW);
...
в файле mydlg.cpp я обрабатываю ON_WM_ERASEBKGND() чтобы удалить задний фон:
BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)
{
// может здесь надо как-то более правильно это делать?-)
return TRUE;
}
кроме того в OnCtlColor я пытаюсь сделать задний фон у контролов прозрачным
(но он становится просто белым): pDC->SetBkMode(TRANSPARENT)
p.s. есть чем-то похожая тема:
http://www.rsdn.ru/Forum/?mid=62812Автор: BugMan
Дата: 11.06.02
, но у меня вроде pDC меняем ж)