• ベストアンサー

モーダルウインドウとモードレスウインドウ

下のページではDoModal()をつかって、モーダルウインドウを表示していますが、モードレスウインドウを表示したい時は、どのようにしたらよろしいのでしょうか? http://oshiete1.goo.ne.jp/qa92564.html

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.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』をどうぞ。

参考URL:
http://wisdom.sakura.ne.jp/system/winapi/win32/win88.html
R360
質問者

補足

ありがとうございます。 DoModal()を何かに変えるだけではダメということですね・・・。

関連するQ&A

専門家に質問してみよう