- ベストアンサー
モーダルウインドウとモードレスウインドウ
下のページではDoModal()をつかって、モーダルウインドウを表示していますが、モードレスウインドウを表示したい時は、どのようにしたらよろしいのでしょうか? http://oshiete1.goo.ne.jp/qa92564.html
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
★『MFC』ですか? ・Win32 SDK ならば『CreateDialog』API関数でモードレス・ダイアログが作成できます。 HWND CreateDialog( HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc ); ・というプロトタイプになります。 サンプル: HINSTANCE hInstance = GetWindowLong(hWnd,GWL_HINSTANCE); HWND hDlg; hDlg = CreateDialog( hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DialogProc ); ←作成 : DestroyWindow( hDlg ); ←破棄 ※『hWnd』が親ウインドウのハンドルです。 最後に: ・『DialogProc』がモードレス・ダイアログのプロシージャ関数です。 また『IDD_DIALOG1』がダイアログのリソース ID になります。 ・さらに『モードレス・ダイアログ』の場合はメッセージ・ループで『IsDialogMessage』関数を 使ってメッセージが『モードレス・ダイアログ』の場合は『TranslateMessage』と『DispatchMessage』 の2つの関数を実行(処理)してはいけません。 ・『モードレス・ダイアログ』の場合は、『モーダル・ダイアログ』と違って『DestroyWindow』関数で 終了時にウインドウを破棄する必要があります。 ・以上。おわり。→Win32 SDK ですが下の『参考URL』をどうぞ。
補足
ありがとうございます。 DoModal()を何かに変えるだけではダメということですね・・・。