Fortran Windows アプリケーションのコーディング要件

この節には,以下のトピックが含まれています。

一般的なコーディグの要件:WinMain 関数と USE

Fortran Windows アプリケーションのコーディング要件を (重要な順に) 示します。

  1. WinMain 関数宣言とインタフェース

    Windows グラフィカル・ユーザー・インタフェース (GUI) アプリケーション (一般に少なくとも GDI と USER32 Win32 ルーチンを使用しているもの) には,WinMain 関数宣言とのインタフェースが必要です。関数宣言用のインタフェース宣言を提供することができます。ia32 システムでは,次の関数がユーザーによって定義されなくてはなりません。

    	     INTEGER(4) function WinMain ( hInstance, hPrevInstance,
    	     &         lpszCmdLine, nCmdShow )
    	!DEC$ ATTRIBUTES STDCALL, ALIAS:'_WinMain@16' :: WinMain
    	     INTEGER(4), INTENT(IN) :: hInstance, hPrevInstance
    	     INTEGER(4), INTENT(IN) :: lpszCmdLine
    	     INTEGER(4), INTENT(IN) :: nCmdShow
    

    WinMain 関数を含んでいるプログラムでは,PROGRAM 文でプログラム単位を主プログラムとして識別することはできません。

  2. USE DFWIN 文または他の適切な USE

    USE DFWIN 文は,Visual Fortran プログラムで,大部分の Windows ルーチンの全パラメタとインタフェースを使用できるようにします。Windows 機能を使用するすべてのプログラムまたは副プログラムは USE DFWIN 文を指定しなくてはなりません。この文は,グラフィックス呼び出しを行うすべての副プログラムで,すべての宣言文 (IMPLICIT NONEINTEGER など),または宣言文を含んでいる他のモジュールの前に置かれている必要があります。

    Windows アプリケーションのパラメタとインタフェースの形式を制限したい場合や Fortran Windows アプリケーションをリンクした時に未解決の参照が発生した場合,「Win32 ルーチンの呼び出し」を参照してください。

  3. WinMain 関数の引数のデータ宣言

  4. アプリケーション依存のコード (他の USE 文,変数宣言,そして実行形式コード)

たとえば,Visual Fortran サンプルGeneric の最初の数行は,次の自由書式ソース・コードと,条件付きの ia32 および ia64 コードを使用しています。

	integer function WinMain( hInstance, hPrevInstance, &
	&                             lpszCmdLine, nCmdShow )
	!DEC$ IF DEFINED(_M_X86_)
	!DEC$ ATTRIBUTES STDCALL, ALIAS : '_WinMain@16' :: WinMain
	!DEC$ ELSE
	!DEC$ ATTRIBUTES STDCALL, ALIAS : 'WinMain' :: WinMain
	!DEC$ ENDIF
	use dfwin
integer hInstance integer hPrevInstance integer nCmdShow integer lpszCmdLine . . .

このサンプルは,IF コンパイラ指示文と,既定のプリプロセッサー・シンボル (「/define」を参照)を使って,可搬性のある条件付きコードを生成しています。

DFWIN.F90 は,Win32 の WINDOWS.H ヘッダ・ファイルの Fortran バージョン (サブセット) です (「Win32 ルーチンの呼び出し」を参照)。

Fortran Windows アプリケーション・ウィザード使用時のコード生成オプション

Fortran Windows アプリケーション・プロジェクト・タイプでプロジェクトを作成する時,Fortran Windows AppWizard が表示され,作成する新しいプロジェクトがソース・コード,チュートリアル・ソース・コード形式,その他のオプションの指定のどれかを選択することができます。

選択すると,ソース・ファイルが,Fortran Windows アプリケーションのサブタイプの 1 つとして一般的に使われるテンプレートのようなソース文を含むかどうかを指定します。

アプリケーション (SDI, MDI, またはダイアログを基本とした) がダイアログボックスで ActiveX コントロールを使用する場合や,「This project will use ActiveX controls」というラベルのボックスをチェックした場合,Fortran Windows AppWizard はダイアログボックスで ActiveX コントロールをサポートするためのテンプレート・コードを追加します。

Dynamic-Link Library (Static Library の代わりに) とリンクするようにプロジェクトのオプションを選択するには,「This project will be linking against one or more Fortran DLL Import libraries.」のラベルのチェックボックスをクリックします。

単一文書インタフェース (SDI) または複数文書インタフェース (MDI) のアプリケーション

これらのアプリケーションの作成は,Win32 ルーチン API のより高度なプログラミング経験と知識が要求されます。このようなアプリケーションは,特定のライブラリー・ルーチンを呼び出し,USE DFWIN 文と USE DFLIB 文を必要とします。SDI アプリケーションは単一のウィンドウを表示し,MDI アプリケーションは複数のウィンドウを表示します (フレーム・ウィンドウ内に現れる 1 以上の子ウィンドウを持つ主フレーム・ウィンドウ)。

たとえば,Fortran Windows AppWizard 画面から MDI オプションを選択します。アプリケーションを (ソース・ファイルの変更なしに) ビルドし,実行すると,「File」メニューから「New」を 2 度クリックすることで 2 つの子ウィンドウを作成した後,以下の画面が表示されます。

Fortran Windows AppWizard 画面から SDI オプションを選択し,アプリケーションをビルドし,実行すると,主ウィンドウ内に子ウィンドウを作成することはできません。

関連情報

ダイアログを基本としたアプリケーション

ダイアログ・アプリケーションは,アプリケーションの主ウィンドウに対してダイアログボックスを使用します。これらのアプリケーションの作成は,Win32 ルーチン API の知識が要求されますが,SDI や MDI アプリケーションよりも要求量は少ないです。これらのアプリケーションは,Visual Fortran ライブラリー・ルーチンを呼び出し,USE DFWINUSE DFLOGM 文を要求します。ダイアログを基本としたアプリケーションは,メニューを一般的には持ちません。

たとえば,Fortran Windows AppWizard 画面からダイアログを基本としてアプリケーションを選択します。アプリケーションを (ソース・ファイルの変更なしに) ビルドし,実行すると,以下のダイアログボックスが表示されます。

関連情報