実行時関数:モードレス・ダイアログボックスを表示します。
モジュール:USE DFLOGM
形式
result = DLGMODELESS (dlg [, nCmdShow, hwndParent])
dlg
(入力) 構造型 DIALOG。ダイアログボックス・パラメタを含みます。構造型 DIALOG の成分は,PRIVATE 属性で定義され,ユーザーが変更したり,個別に参照することはできません。この関数に渡される変数は,ダイアログボックスが存在する間メモリー中に残されなければなりません。つまり,DLGINIT 呼び出しから DLGUNINIT 呼び出しの間です。
変数は,モジュール内の大域データとして,STATIC 属性を持つ変数として,または,ダイアログボックスが存在する間活動状態である呼び出し手続中に宣言することができます。DLGMODELESS を呼び出す手続の AUTOMATIC 変数であってはなりません。
nCmdShow
(入力) 整数型。ダイアログボックスがどのように表示されるかを指定します。以下の値の内の 1 つでなければなりません。
値 | 説明 |
---|---|
SW_HIDE | ダイアログボックスを隠します。 |
SW_MINIMIZE | ダイアログボックスを最小化します。 |
SW_RESTORE | ダイアログボックスを活動状態にし,表示します。ダイアログボックスが最小化または最大化されている場合,Windows はその元の大きさと場所に戻します。 |
SW_SHOW | ダイアログボックスを活動状態にし,現在の大きさと位置に表示します。 |
SW_SHOWMAXIMIZED | ダイアログボックスを活動状態にし,最大ウィンドウとして表示します。 |
SW_SHOWMINIMIZED | ダイアログボックスを活動状態にし,アイコンとして表示します。 |
SW_SHOWMINNOACTIVE | ダイアログボックスをアイコンとして表示します。現在活動状態のウィンドウは活動状態のままです。 |
SW_SHOWNA | ダイアログボックスを現在の状態で表示します。現在活動状態のウィンドウは活動状態のままです。 |
SW_SHOWNOACTIVATE | ダイアログボックスを最後に表示された大きさと位置で表示します。現在活動状態のウィンドウは活動状態のままです。 |
SW_SHOWNORMAL | ダイアログボックスを活動状態にし,表示します。ダイアログボックスが最小化または最大化されている場合,Windows はその元の大きさと場所に戻します。 |
基本値は SW_SHOWNORMAL です。
hwndParent
(入力) 整数型。ダイアログボックスの親ウィンドウを指定します。省略された場合,値は以下の順で決定されます。
DLGMODELESS がモードレス・ダイアログボックスのコールバックから呼び出された場合,そのダイアログボックスは親ウィンドウです。
Windows のデスクトップ・ウィンドウは親ウィンドウです。
結果
結果の型は INTEGER(4) です。関数が成功裏にダイアログボックスを表示した場合には .TRUE. が返され,そうでない場合,.FALSE. が返されます。
実行中,DLGMODELESS はモードレス・ダイアログボックスを表示し,呼び出しアプリケーションに制御を戻します。DLGEXIT が明示的または基本ボタン・コールバックの呼び出しの結果としてのどちらかで呼び出されるまで,ダイアログボックスは活動状態のままです。
DLGMODLESS は,Windows アプリケーションでのみ使用することができます。アプリケーションは,Windows メッセージを処理するメッセージ・ループを含んでいなければなりません。メッセージ・ループは,各メッセージに対して DLGISDLGMESSAGE を呼び出さなければなりません。以下の例を参照してください。複数のモードレス・ダイアログボックスを一度に表示することができます。モーダル・ダイアログボックスは,モードレス・ダイアログ・コールバックから DLGMODAL を呼び出すことでモードレス・ダイアログボックスから表示することができます。しかしながら,DLGMODELESS はモーダル・ダイアログボックス・コールバックから呼び出すことはできません。
ダイアログボックスが作成された後で表示される前に直ちに処理を行うには,そして,ダイアログボックスが破壊される前に直ちに処理を行うには,DLGSETSUB で DLG_INIT コールバックを使います。
互換性
WINDOWS CONSOLE DLL LIB
関連情報
DLGEXIT,DLGINIT,DLGISDLGMESSAGE,DLGSETSUB,モードレス・ダイアログボックスの使用
use dflogm include 'resource.fd' type (DIALOG) dlg type (T_MSG) mesg integer*4 ret logical*4 lret ... ! 主ダイアログボックスを作成し,コントロールとコールバックを設定します。 lret = DlgInit(IDD_THERM_DIALOG, dlg) lret = DlgSetSub(dlg, IDD_THERM_DIALOG, ThermSub) ... lret = DlgModeless(dlg, nCmdShow) ... ! メッセージを読み取り,処理します。 do while( GetMessage (mesg, NULL, 0, 0) ) ! ダイアログボックスにメッセージでの最初のチャンスを与えるために ! DlgIsDlgMessage が呼び出されなければならないことに注意してください。 if ( DlgIsDlgMessage(mesg) .EQV. .FALSE. ) then lret = TranslateMessage( mesg ) ret = DispatchMessage( mesg ) end if end do ! ダイアログボックスのメモリーをクリーンアップし,アプリケーションを終了します。 call DlgUninit(dlg) WinMain = mesg%wParam return