ダイアログ全画面表示 成功

Usa*Usa日記の id:machi_pon さんからトラックバックを頂いた。
http://d.hatena.ne.jp/machi_pon/20060810/1155200862
アドバイスに従い修正したら、コマンドバーが見事消えた。ありがとうございます。

CCapPicDlg::CCapPicDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCapPicDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

	m_bFullScreen = FALSE;   // ここが ポイント らしい
}

void CCapPicDlg::FullScreen( bool fmode )
{
	if( fmode ) {
		m_wndCommandBar.Show( FALSE );

		SHINITDLGINFO shidi;
		::ZeroMemory( &shidi, sizeof(SHINITDLGINFO) );

		shidi.dwFlags = SHIDIF_SIPDOWN;
		shidi.dwMask = SHIDIM_FLAGS;
		shidi.hDlg = m_hWnd;
		shidi.dwFlags |= SHIDIF_SIZEDLGFULLSCREEN;  
		::SHInitDialog( &shidi );

		RECT rc;
		HWND hDtW = ::GetDesktopWindow();
		::GetWindowRect( hDtW, &rc );
		MoveWindow( 0, 0, rc.right, rc.bottom, TRUE );

		::SetForegroundWindow( m_hWnd );
		::SHFullScreen( m_hWnd, 
			SHFS_HIDETASKBAR|SHFS_HIDESIPBUTTON|SHFS_HIDESTARTICON );
	}else{
		::SHFullScreen( m_hWnd, SHFS_SHOWTASKBAR | SHFS_SHOWSTARTICON);
	}
}

コンストラクタで CDialog のメンバ変数 m_bFullScreen を FALSE にセットしておくのがポイントで、あとは前回と同様、OnInitDialog や OnActivate や OnSettingChange でこの 適宜呼び出すわけです。

SIPボタンを押すと、仮想キーボードが点いたり消えたり問題は、SIPボタンが消えてしまったので確認できなかった。ははは。あとでなんとかしようっと。

ブログやって日が長いわけじゃないけど、トラックバックもらったのは初めてで、本当に助かりました。