お世話になります。
VC2005+MFC8.0 WinXPで開発をしております。
CPropertySheetとCPropertyPageクラスを使用し、
Wizard 97スタイルのウィザードを出そうとしていますが、
ヘッダー部分が白くなるはずが、灰色になってしまいます。
プロパティシート1クラス、プロパティページ1クラスの
構成です。
詳細は、以下のようになります。
[ダイアログリソース(プロパティページ用)]
Style:子
System Menu:False
Caption:タイトル
[コード]
<プロパティページ>
CWizPage1::CWizPage1() : CPropertyPage(CWizPage1::IDD) // IDD=ダイアログのリソースID
{
m_psp.dwFlags |= PSP_DEFAULT | PSP_USEHEADERTITLE;
m_psp.pszHeaderTitle = _T("Title");
}
<プロパティシート>
CWizard1::CWizard1(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) : CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
SetWizardMode();
AddPage(&m_Page1); // Page1はこのクラスのメンバです
m_psh.dwFlags |= PSH_WIZARD97 | PSH_HEADER;
m_psh.hInstance = AfxGetInstanceHandle();
}
<使用箇所(CXXXApp::InitInstance)>
CWizard1 wizard(_T("Wizard1"), m_pMainWnd, 0);
wizard.DoModal();
以上、どなたかご教授頂けないでしょうか。
--
(つづき)
ちなみに、stdafx.h内の_WIN32_IE は 0x0500(IE5以上)に定義
してあります。
宜しくお願いいたします。
--
自己レスです。
調査と試行錯誤の上、以下のコードにたどりつきました。
[ダイアログリソース(プロパティページ用)]
Style:子
System Menu:False
Caption:なし
Title Bar:False(ページ毎にウインドウタイトルを変えたい場合はTrue、Captionを入力)
[コード]
<プロパティページ>
CWizPage1::CWizPage1() : CPropertyPage(CWizPage1::IDD) // IDD=ダイアログのリソースID
{
m_psp.dwFlags |= PSP_USEHEADERTITLE /*| PSP_HIDEHEADER*/;
m_psp.pszHeaderTitle = _T("Header Title");
}
<プロパティシート>
CWizard1::CWizard1(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) : CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
SetWizardMode();
AddPage(&m_Page1); // Page1はこのクラスのCWizPage1型のメンバです
m_psh.dwFlags |= PSH_WIZARD97 | PSH_HEADER /*| PSH_WATERMARK*/;
// m_psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WIZARD_WATERMARK);
m_psh.pszbmHeader = MAKEINTRESOURCE(IDB_WIZARD_HEADER_ICON);
m_psh.hInstance = AfxGetInstanceHandle();
m_strTitle = BtxLoadString(IDS_MSG_WIZARD_TITLE); // OnInitDialog中でSetWindowTextする
}
今回の間違いは、PSP_USEHEADERTITLEでヘッダー表示の指定を指定をした際に、
一緒にアイコンリソースを指定していなかったことでした。ヘッダーと透かしをフル
セットで指定し、ヘッダーを隠したいときはPSP_HIDEHEADRを指定するとよいようです。
以下に、他にわかったことをコメントします。
・上のコード中のコメントをはずせば、左端に縦長のペインが表示され、その背景
(=Watermark:透かし)が、pszbmWatermarkで指定したビットマップで埋められます。
・今回はページ毎にウインドウタイトルを変えたくなかったので、ダイアログ
のキャプションを非表示としました。(ダイアログのキャプションを表示すれば、
それが各ページ毎にウインドウのキャプションに表示されます)。ところが、
プロパティシート側ではキャプションを設定してもどうしても表示されず、やむを
えずOnInitDialog中でSetWindowTextすることで対処しました。
・ヘッダー左端に表示される、pszbmHeaderで指定されるアイコンは、49x49ピクセル
でした。
以上
--