C++)020:WindowsMobileらしい全画面ダイアログを作る通常のパソコンで行うような、たくさんのダイアログを切り替えて作業する、といった事は小さな携帯画面では操作もしずらく、あまり現実的ではありません。WindowsMobileアプリケーションでは、ウインドウであれダイアログであれ、全画面表示にするのが一般的です。その方が使い勝手もよく、他のソフトウェアともインターフェースを統一できるのでお勧めです。Standardでは、主にナビゲーションバーにOKボタンを表示したフルスクリーンダイアログボックスが使用されます。完了ボタンは視覚的にフルスクリーンのダイアログボックスで隠されてOKボタンに置き換わるため、「ダイアログのOKボタンである」ということが理解しやすいからです。ダイアログのボタンを完了ボタン([×]ボタン)にしていると、親画面の完了ボタン([×]ボタン)なのか、ダイアログの完了ボタンなのか区別がつかず、ユーザの誤動作を招くことになります。ダイアログも全画面表示にしてみましょう。前回のダイアログ「SampleDialog002」を全画面ダイアログになるように変更します。全画面ダイアログを表示するには、WM_INITDIALOG:でSHInitDialog()を使用します。SH~()関数と頭にSHのつく関数は、WindowsMobile特有の関数で主にUIの部分に関連する関数です。このSHInitDialog()関数はSHINITDLGINFO構造体にパラーメータを指定することで、ダイアログボックスのサイズをSIPに合わせて変更します。SHInitDialog()関数を使用するにはaygshell.hをインクルードします。■SHInitDialog()ダイアログの状態を指定するSHINITDLGINFO構造体に値をセットしてSHInitDialog()関数に渡します。*PSHINITDLGINFO;dwMaskSHINITDLGINFO構造でどのメンバーが有効であるかを示すビットフィールドで、SHIDIM_FLAGSを指定します。hDlgダイアログへのハンドルです。dwFlagsダイアログの動作を決定するフラグです。SHIDIM_FLAGSフラグが設定されてなければ無視されます。SHIDIF_DONEBUTTONナビゲーションバーにOKボタンを表示します。SHIDIF_EMPTYMENU下部に空のメニューを作成します。SHIDIF_FULLSCREENNOMENUBARダイアログボックスを入力パネルの位置に関係なく、フルスクリーン表示に設定します。SHIDIF_SIPDOWNダイアログ初期化時に入力パネルが開いていたら閉じます。SHIDIF_SIZEDLGダイアログボックスはSIPの邪魔にならないサイズで最大化されます。SHIDIF_SIZEDLGFULLSCREENダイアログボックスを入力パネルの位置に関係なく、フルスクリーン表示に設定します。SHIDIF_CANCELBUTTON[×]ボタン表示しダイアログを閉じると同時にキャンセル(IDCANCEL)を発行します。SHIDIF_WANTSCROLLBARダイアログが画面に収まらない場合にスクロールバーを表示します。ソースコードは次のとおりです。ダイアログとのデータ受け渡し用。{//ダイアログからのメッセージを処理する。ウィンドウプロシージャで処理する。親ウィンドウのハンドル。SHINITDLGINFO構造でどのメンバーが有効であるかを示すビットフィールドです。SHIDIM_FLAGSを指定します。ダイアログボックスを入力パネルの位置に関係なく、フルスクリーン表示に設定します。ナビゲーションバーにOKボタンを表示します。ダイアログのハンドル。