【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード

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

A 回答 (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/w …

この回答への補足

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

補足日時:2007/03/13 20:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!