ダイアログ全画面表示 成功
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ボタンが消えてしまったので確認できなかった。ははは。あとでなんとかしようっと。
ブログやって日が長いわけじゃないけど、トラックバックもらったのは初めてで、本当に助かりました。