akiモーダルダイアログを作る今まで、ウィンドウを使ったプログラムを作成してきました。した情報の表示や設定を行いたいだけの場合には、ダイアログが便利です。ダイアログの場合は、VisualC++の「リソースエディタ」を用いて、WYSIWYGにダイアログを作成することが可能ですので、ちょっとしたアプリケーションの作成に向いています。ダイアログリソースを作成するまずダイアログリソースの作成を行います。エクスプローラ]の中の、[リソースファイル]を右クリックします。メニューから[追加(D)]-[リソース(R)...]を選択します。このように、正しく表示されました。ダイアログではこのような事が起こるのでしょう。実はダイアログではフォントのサイズを基にして、ダイアログの幅、高さ、オブジェクトの幅、高さを決めているのです。Dlg"がWindowsMobileには存在しないため、ダイアログやオブジェクトの幅が正しく設定されず、文字が切れたり、チェックボックスやラジオボタンの上下が切れてしまったのです。ダイアログボックスには、今回作成したモーダルダイアログボックスの他に、モードレスダイアログボックスというものがあります。ダイアログボックスを閉じるまで、他の操作が出来ません。通常のアプリケーションではよくこれを使いますね。ダイアログボックスを開いている間にも他の操作が出来ます。ダイアログボックスを開いたまま、ブラウザを開いたり、電卓を開いたりすることができます。Excelの検索ダイアログがこれにあたりますね。Excelでは検索ダイアログを開いたまま操作ができますよね。今回のプログラムの説明です。モーダルダイアログを作るには、DialogBox関数を呼び出します。ダイアログボックスを閉じるときにはEndDialog関数を呼び出します。DialogBox関数モーダルダイアログを表示します。ダイアログプロシージャのポインタ);EndDialog関数モーダルダイアログボックスを破棄し、そのダイアログボックスに関係するすべての処理を終了します。返したい値);WinMain関数を見てください。今までのプログラムとは違い、メッセージループがありません。これは、DialogBox関数の処理はEndDialog関数が呼び出されるまで終了しないためです。DialogBox関数のlpTemplateにはダイアログリソースを指定します。下位ワードに識別子を指定しなければなりません。MAKEINTRESOURCEマクロを使用すれはリソース識別子を作成できます。lpDialogFuncにはダイアログプロシージャを指定します。ダイアログプロシージャDlgProcを見てみましょう。ダイアログでは、ボタンが押されるなどのイベントが発生すると、WM_COMMANDメッセージが届きます。これだけでは、どのボタンが押されたのかわかりませんね。追加の情報がwParamに格納されています。どのボタンか判断するにはLOWORD(wParam)とします。これで押されたボタンのIDがわかります。LOWORDは特定の値の下位ワードを取り出すマクロです。wParamの下位ワードに押されたボタンのIDが格納されているのです。サンプルでは、IDOKとIDCANCELの処理を別々に書いていますが、ダイアログプロシージャの中での処理が特にない場合はまとめて下のように書きます。EndDialogの第2引数にLOWORD(wParam)を指定するのがポイントです。IDCANCEL:EndDialog(hDlg,LOWORD(wParam));break;}今日はここまでです。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト検索:著書ベストセラーが新しいレイアウトエディタに対応して大改訂。ThemesNewsDevelopAndroidiPhone/iPad/iOS。