I moved the call to the pages OnInitialUpdate and I got the same result.
On Wed, 25 Jun 2008 11:17:53 -0600, "Timothy Dean" <my_email@this.com>
wrote:
Maybe you could try calling ::IsAppThemed() and see what it returns. If
it
returns false, then I'd guess your (unconditional)
EnableThemeDialogTexture
would have no effect. Or, maybe you're delay-loading uxtheme.dll, and
it's
failing, and you're eating the exception it throws. What does
EnableThemeDialogTexture return?
IsAppThemed returns TRUE. EnableThemeDialogTexture returns S_OK. If I
don't call EnableThemeDialogTexture, the background is gray.
What is the base class of the pages you are using?
I added comments about the "base" typedef to the code I presented in my
last message to indicate it was CDialog.
I am currently derived
from CDialog. Maybe I should try CPropertyPage. This is easy to
duplicate.
Here is what I am doing:
1. Create a simple dialog app.
2. Add a tab control and member variable for the tab control.
3. Create a new dialog resource for the page. Create a new class for the
dialog page and create a member for this in the main dialog.
a. Set style to child.
b. turn off border.
4. In the OnInitDialog do the folllowing:
TC_ITEM TabItem;
// creating tab
TabItem.mask=TCIF_TEXT;
TabItem.pszText=_T("Tab1");
m_tabControl.InsertItem(0,&TabItem);
TabItem.mask=TCIF_PARAM;
// property page
VERIFY(m_propertyPage1.Create(CDialogPropertyPage::IDD, &m_tabControl));
// setting background to match XP theme
HRESULT
hResult=EnableThemeDialogTexture(m_propertyPage1.m_hWnd,ETDT_ENABLETAB);
In my first reply to you, I said:
<q>
The tab pages should do this in their OnInitDialog handlers:
EnableThemeDialogTexture(m_hWnd, ETDT_ENABLETAB);
That's all you should have to do.
</q>
In my last message, I gave the whole function:
<q>
BOOL SubDialogPage::OnInitDialog()
{
// The "base" typedef is for SubDialog.
base::OnInitDialog();
if (UserEx::IsAppThemed())
EnableThemeDialogTexture(m_hWnd, ETDT_ENABLETAB);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
</q>
Have you tried moving the EnableThemeDialogTexture call to the page's
OnInitDialog handler? You just might be calling it too late!
--
Doug Harrison
Visual C++ MVP