モードレス・ダイアログボックスを追加するための Fortran AppWizards の使用

モードレス・ダイアログボックスを使用するには,一般的に Fortran Windows プロジェクト・タイプを使用します。Fortran Windows Project AppWizard は,モードレス・ダイアログボックスを使用するためのコーディングを追加する手助けを行います。

プロジェクトを作成し,Fortran Windows プロジェクトを指定すると,Fortran Windows Project AppWizard は 4 つのオプション (これらのオプションの説明を表示するには F1 キーを押します) を表示します。

ダイアログボックスがアプリケーションの基本ウィンドウであるダイアログのコーディング方法を知るには,以下の 1 つを選択します。

「A simple Dialog Based Application」オプションを選択した時に生成されるテンプレートのようなコードには,以下のものがあります。

「A simple Single Document Interface (SDI)」オプションを選択した時に生成されるテンプレートのようなコードに,主ウィンドウのクライアント領域にダイアログボックスを追加するには以下のようにします。

  1. 「Insert」メニューで「Resource...」を選択し,新しいダイアログボックスを作成します。ダイアログボックスのプロパティを編集します。「Styles」タブを選択し,「Styles」に「Child」を設定し,「Border」に「Thin」を設定します。

  2. 主ソース・ファイルで以下の USE 文を追加します。

    	USE dflogm
    
  3. 主ソース・ファイルの MainWndProc 関数に WM_CREATE メッセージを取り扱う場合を追加します。この場合,通常の方法でダイアログボックスが初期化されます。ダイアログボックスを表示するには,以下を呼び出します。

    	lret = DlgModeless(dlg, SW_SHOWNA, hwndParent)
    

    この呼び出しでは,hwndParent はアプリケーションの主ウィンドウの Window ハンドルです。

  4. 主ソース・ファイルで,TranslateAccelerator Win32 ルーチンを呼び出す前に,メッセージ・ループに DlgIsDlgMessage 呼び出しを追加します。以下のようにします。

    	! Read and process messages
    	do while( GetMessage (mesg, NULL, 0, 0) )
    	  if ( DlgIsDlgMessage(mesg, dlg) .EQV. .FALSE. ) then
    	    if ( TranslateAccelerator (mesg%hwnd, haccel, mesg) == 0) then
    	      lret = TranslateMessage( mesg )
    	      ret  = DispatchMessage( mesg )
    	    end if
    	  end if
    	end do
    
  5. オプションとして,ユーザーが主ウィンドウの大きさを変更できるようにするには,WM_RESIZE メッセージを取り扱う場合を追加し,大きさを基本としたダイアログボックスのレイアウトを変更します。

この形式のアプリケーションの例としては,...\SAMPLES\DIALOG にある Visual Fortran サンプルFXPLORER を参照してください。