DLGMODELESS

実行時関数:モードレス・ダイアログボックスを表示します。

モジュール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
(入力) 整数型。ダイアログボックスの親ウィンドウを指定します。省略された場合,値は以下の順で決定されます。

  1. DLGMODELESS がモードレス・ダイアログボックスのコールバックから呼び出された場合,そのダイアログボックスは親ウィンドウです。

  2. Windows のデスクトップ・ウィンドウは親ウィンドウです。

結果

結果の型は INTEGER(4) です。関数が成功裏にダイアログボックスを表示した場合には .TRUE. が返され,そうでない場合,.FALSE. が返されます。

実行中,DLGMODELESS はモードレス・ダイアログボックスを表示し,呼び出しアプリケーションに制御を戻します。DLGEXIT が明示的または基本ボタン・コールバックの呼び出しの結果としてのどちらかで呼び出されるまで,ダイアログボックスは活動状態のままです。

DLGMODLESS は,Windows アプリケーションでのみ使用することができます。アプリケーションは,Windows メッセージを処理するメッセージ・ループを含んでいなければなりません。メッセージ・ループは,各メッセージに対して DLGISDLGMESSAGE を呼び出さなければなりません。以下の例を参照してください。複数のモードレス・ダイアログボックスを一度に表示することができます。モーダル・ダイアログボックスは,モードレス・ダイアログ・コールバックから DLGMODAL を呼び出すことでモードレス・ダイアログボックスから表示することができます。しかしながら,DLGMODELESS はモーダル・ダイアログボックス・コールバックから呼び出すことはできません。

ダイアログボックスが作成された後で表示される前に直ちに処理を行うには,そして,ダイアログボックスが破壊される前に直ちに処理を行うには,DLGSETSUBDLG_INIT コールバックを使います。

互換性

WINDOWS CONSOLE DLL LIB

関連情報

DLGEXITDLGINITDLGISDLGMESSAGEDLGSETSUBモードレス・ダイアログボックスの使用

	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