fortran66のブログ

fortran について書きます。

Win32

DOS窓経由ではなく window だけで。

左クリックで翌月、右クリックで終了。1枚目に白紙が出ます。 ソース・プログラム 余り考えないで流用したので乱れている。 module m_sub use ifwina use kernel32 type :: t_wnd integer (HANDLE) :: hWnd integer (HANDLE) :: hDC end type type (t_wnd),…

Windows の与えるマシン固有の ID 二種

Intel 掲示板スレッドに話題が出ていたので、参考にしつつ Fortran で書いてみました。http://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/64037/Win32 プログラムはいまだ作法がよく分からず手探りなので、チョンボ…

Fortran で GUID を得る。

Windows で識別のために生成される GUID を Fortran で求めます。参考ページ http://support.microsoft.com/kb/176790/ja ■出力結果 ■ Fortran Source Cray 式ポインターなど、非 ISO 規格の機能を使っています。Win32 なので仕方ないね。 イマイチ正しいか…

HDD Serial Number

IDE の ドライブに ATA・ATAPI 制御コマンドを送って、シリアル番号やファームウェアバージョンなどのハードウェア固有の情報を得ることができます。 ■実行結果 ■Fortranソースコード 参考にしたページは、主にここ http://www.usefullcode.net/2007/02/hdd.…

総天然色の四角が枡状に乱数で表示されるスクリーンセイバーです。 起動の SUBSYSTEM は Windows で。 生成される実行ファイルの拡張子は .exe から .scr に変えておくと便利。 実行は、右クリック->TEST で可能。 MODULE ScreenSaver USE ifwinty CONTAINS …

拡張子を.exeから.scrに変えた後は、ダブルクリックすれば起動できるようです。白い四角を10個づつ表示しては、画面を黒で塗りつぶして、また四角を表示し続けます。 logical(4) function ScreenSaverConfigureDialog(hDlg ,message ,wParam, lParam) !DEC…

 最小限のスクリーンセーバー

Intel Visual Fortran Ver.10.1 で Screen Saver 用の Module が提供されているのを見つけました。最小限度のものを作ってみます。Module scrnsave を使用します。 SUBSYSTEM は Windows Program 用にします。 出来た EXE ファイルの拡張子を .SCR に変えて…

Fortran2003 での C 呼び出し規約と、Win32 での呼び出し規約が、異なっているようなので、以下の内容は間違っているかもしれません。名称の規約しか合っていない可能性があります。 MODULE m_sub USE ifwin CONTAINS INTEGER (LRESULT) FUNCTION MainWndPro…

Fortran の C ルーチン呼び出しと、Win32 の呼び出し規約の問題があるため、問題がある可能性が高いです。Fortran2003 の C 言語との互換機能を使って、Win32 のルーチンを呼ぶ。 コンソール窓のハンドルを得る関数 GetConsoleWindow へのインターフェースを…

Fortran での C ルーチン呼び出し規約と Win32 での呼び出し規約が異なっているようで、問題が生じる可能性があるようです。Window 表示のミニマル。 Fortran2003 の C との互換命令を用いて、!DECのコンパイラ拡張を使用しない書き方。 参照 http://d.hate…

Window 表示のミニマル。窓を開く時と窓を閉じる時に文字列表示。Window 上で右・左クリックで文字列表示。窓を閉じる。 MODULE m_sub USE ifwin CONTAINS INTEGER (LRESULT) FUNCTION MainWndProc( hWnd, mesg, wParam, lParam ) !DEC$ ATTRIBUTES STDCALL, …

Winsock の version 等を知る。 PROGRAM winsock USE ifwina IMPLICIT NONE INTEGER :: iret, iMaxSockets, iMaxUdpDg INTEGER (WORD) :: wVer TYPE (T_WSADATA) :: lpWSAData wVer = MAKEWORD(2, 0) iret = WSAStartUp(wVer, lpWSAData) IF (iret /= 0) STO…

Fortranでインターネッツ。ping を打ってみます。 Linker のオプション。iphlpapi.lib を加える必要があります。 PROGRAM ping USE ifwin IMPLICIT NONE ! TYPE :: t_ip_option_information INTEGER (UCHAR) :: Ttl INTEGER (UCHAR) :: Tos INTEGER (UCHAR) …

iphlpapi という Win32 API を呼び出すことで Fortran でもネットワーク関連のプログラムが可能になります。しかし Intel は iphlpapi.lib 用のヘッダー・モジュールを用意してくれていないので、自分で定義を探して定数などを定義する必要があります。基本…

阿部さん しょんべん

PROGRAM kusomiso USE uhoplot CALL gr_on('Abe-san', 500, 600) CALL gr_pencol(irgb(0, 0, 0)) CALL gr_text(150, 10, 'ああ・・・つぎはションベンだ', irgb(155, 155, 0) ) CALL gr_show() ! chin chin CALL line( 0.0, 11.0, 0) CALL line( 0.0, 8.0, 1) C…

阿部さん

MODULE uho_win USE ifwina USE ifwinty USE ifmt, ONLY : RTL_CRITICAL_SECTION IMPLICIT NONE TYPE :: t_wnd INTEGER (HANDLE) :: hWnd INTEGER (HANDLE) :: hDC INTEGER (LPINT) :: hThread INTEGER :: id INTEGER (HANDLE) :: hPen CHARACTER (LEN = 80)…

コンソールからWindowを開く。

コンソールアプリから、Windowを開きます。 一般的には、メインルーチンでWinMainをCALLすればよいだけです。引数の多くはほぼ意味を持ちません。□コマンドライン引数を渡さないような最小形式のメインプログラムは以下のようになります。 =================…

Windows Program

Windows Programは、普通のコンソール型のプログラムしか作ったことの無い者には、中々理解しがたいものがあります。以前『猫でも分かるWindowsプログラミング』を買って読んで理解不能だったときは、「俺は猫以下か!」と、かなりがっかりしました。 以下に…

グラフィック用モジュール uhoplot

必要なモジュール2つ。一つはグラフィック窓を開くため。もう一つは線などを描くため。ビルド・オプションとしては、ライブラリをマルチスレッド用に指定する必要があります*1。Intel Visual FortranのWindows用定義モジュールには、名前の二重定義があった…

阿部高和と学ぶIntel Visual Fortran

コンソール窓から対話的に絵を描くモヂュールを作ります。普通のコンソール型プロジェクトで、PROGRAM文で始まるメインルーチンが実行開始位置となり、対話的に絵がかける様になります。マルチスレッドでグラフィック窓を開くので、絵を描きながらコンソール…

Windows Program Minimum

Intel Visual Fortran によるWin32プログラムの最小構成。普通のコンソール用アプリケーション形式で新しいプロジェクトを作ります。 ただし、コンパイル時のオプションとしてLINKのSYSTEMオプションで、SUBSYSTEMをWINDOWSに変更する必要があります*1。実行…