zoukankan      html  css  js  c++  java
  • 配置VS使用winteracter

    一.winteracter是什么?为什么要用VS代替wide?
    winteracter 是一款强大的 Fortran 图形界面函数库,可方便的用 Fortran 生成GUI界面,对话框,菜单,绘图等操作。支持 windows/Linux/Mac 上的绝大多数编译器。具体可参考本站文章介绍>>>
    其自带 wide 编译环境(是 Winteracter IDE 的缩写),但其功能比较简单,尤其是 debug 调试非常困难。因此,有必要用 Visual Studio 来代替。
    二.配置使用方法 1. 配置 VS 的路径(仅第一次操作需要设置) 打开VS,选择工具菜单,选项。然后依次找到 IVF 的编译器设置
    点击 Includes 后面的按钮,弹出包含列表,在其中咱贴上 Winteracter 安装目录下的 include 路径和 lib.if8 路径,例如,图中的两行(切不可删除原有的路径):
    然后点开 Libraries 后的按钮,在其中的列表里粘贴上 lib.if8 的路径,如图(注意,这两处路径需填写您的计算机上安装的路径,切不可照抄图片上的路径):

    2.使用 wide 创建资源(含对话框,菜单等) 由于 Winteracter 资源的特殊性,其资源编辑必须使用 wide 完成。 打开 wide,创建一个空白的工程。然后添加一个 Resource Script 资源脚本,在其中编辑部分资源,例如插入一个对话框。

    此时,在 wide 工程文件夹下,会生成三个文件,其中 *.rc 和 *.f90 文件将来会用到。*.wpj 工程虽然无用,但方便打开 wide 修改资源,也请保留。
    3. 使用 VS 创建工程并使用 winteracter
    打开VS,创建工程,选择类型为 windows,empty(空白工程)
    创建工程后,在工程的 resource files 文件夹上右键,选择添加,现有项。找到 *.rc 文件添加进来。(在选择文件时,可能需要切换文件类型为所有)

    同理,把 resid.f90 添加到 source files

    !!!重要警告!!!由于 winteracter 的资源特殊性,*.rc 文件千万不能由 Visual Studio 打开,否则会破坏其结构!!!无法挽回!!!
    然后再添加您自己的源代码,在使用到资源时,用 use RESID 获得资源的ID。
    例如,添加如下代码,可实现最简单的对话框创建(假定对话框ID为 IDD_DIALOG001)。

    Module Global
      Use Winteracter !// 使用 Winteracter
      Use Resid !// 使用 Resid 资源ID
      Implicit None
    End Module Global
    
    Program www_fcode_cn
      Use Global
      Implicit None
      TYPE(WIN_MESSAGE) :: MESSAGE
      LOGICAL           :: QUIT  = .FALSE.
      INTEGER           :: ITYPE
      CALL WInitialise() !// 初始化
      CALL WindowOpen(HideWindow) !// 打开窗口
      CALL WDialogLoad(IDD_DIALOG001) !// 加载对话框
      CALL WDialogShow(-1,-1,0,Modeless) !// 显示对话框
      DO WHILE(.NOT.QUIT) !// 无穷消息循环
        CALL WMessage(ITYPE,MESSAGE)
        SELECT CASE (ITYPE)
          CASE (PushButton)
            CALL ProcessButton(MESSAGE%VALUE1,QUIT)
        END SELECT
      END DO
      CALL WindowClose()
      STOP
      
    Contains
    
      Subroutine ProcessButton(IDENT,QUIT)
        IMPLICIT NONE
        INTEGER, INTENT (IN)     :: IDENT
        LOGICAL, INTENT (IN OUT) :: QUIT
        SELECT CASE (IDENT)      
          CASE (IDCANCEL)
            QUIT = .TRUE. !// 如果按下 IDCANCEL 按钮,退出
        End select
      End Subroutine ProcessButton
    
    End Program www_fcode_cn
    

      

    Module Global
      Use Winteracter !// 使用 Winteracter
      Use Resid !// 使用 Resid 资源ID
      Implicit None
    End Module Global
    
    Program www_fcode_cn
      Use Global
      Implicit None
      TYPE(WIN_MESSAGE) :: MESSAGE
      LOGICAL           :: QUIT  = .FALSE.
      INTEGER           :: ITYPE
      CALL WInitialise() !// 初始化
      CALL WindowOpen(HideWindow) !// 打开窗口
      CALL WDialogLoad(IDD_DIALOG001) !// 加载对话框
      CALL WDialogShow(-1,-1,0,Modeless) !// 显示对话框
      DO WHILE(.NOT.QUIT) !// 无穷消息循环
        CALL WMessage(ITYPE,MESSAGE)
        SELECT CASE (ITYPE)
          CASE (PushButton)
            CALL ProcessButton(MESSAGE%VALUE1,QUIT)
        END SELECT
      END DO
      CALL WindowClose()
      STOP
      
    Contains
    
      Subroutine ProcessButton(IDENT,QUIT)
        IMPLICIT NONE
        INTEGER, INTENT (IN)     :: IDENT
        LOGICAL, INTENT (IN OUT) :: QUIT
        SELECT CASE (IDENT)      
          CASE (IDCANCEL)
            QUIT = .TRUE. !// 如果按下 IDCANCEL 按钮,退出
        End select
      End Subroutine ProcessButton
    
    End Program www_fcode_cn
    Module Global
      Use Winteracter !// 使用 Winteracter
      Use Resid !// 使用 Resid 资源ID
      Implicit None
    End Module Global
    
    Program www_fcode_cn
      Use Global
      Implicit None
      TYPE(WIN_MESSAGE) :: MESSAGE
      LOGICAL           :: QUIT  = .FALSE.
      INTEGER           :: ITYPE
      CALL WInitialise() !// 初始化
      CALL WindowOpen(HideWindow) !// 打开窗口
      CALL WDialogLoad(IDD_DIALOG001) !// 加载对话框
      CALL WDialogShow(-1,-1,0,Modeless) !// 显示对话框
      DO WHILE(.NOT.QUIT) !// 无穷消息循环
        CALL WMessage(ITYPE,MESSAGE)
        SELECT CASE (ITYPE)
          CASE (PushButton)
            CALL ProcessButton(MESSAGE%VALUE1,QUIT)
        END SELECT
      END DO
      CALL WindowClose()
      STOP
      
    Contains
    
      Subroutine ProcessButton(IDENT,QUIT)
        IMPLICIT NONE
        INTEGER, INTENT (IN)     :: IDENT
        LOGICAL, INTENT (IN OUT) :: QUIT
        SELECT CASE (IDENT)      
          CASE (IDCANCEL)
            QUIT = .TRUE. !// 如果按下 IDCANCEL 按钮,退出
        End select
      End Subroutine ProcessButton
    
    End Program www_fcode_cn

     然后,在 Visual Studio 中,打开工程属性(在工程上右键,属性),然后展开 链接器(Linker) 设置,输入(Input),在 Additional Dependencies 中输入以下 lib 文件: winter.lib comdlg32.lib opengl32.lib winmm.lib winspool.lib advapi32.lib glu32.lib Shell32.lib 如图:

    编译,链接。一切正常的话,一般就可以得到结果了。
     

    转自:http://fcode.cn/guide-80-1.html

  • 相关阅读:
    常用模块(一)
    面向对象进阶:反射以及内置方法
    面向对象三大特性之多态、封装与装饰器
    面向对象的三大特性之继承
    python之面向对象
    python之内置函数
    python之迭代器,生成器以及列表推导式
    比较好用的linux命令
    使用redission实现分布式信号量以及遇到的一些坑
    linux一些命令
  • 原文地址:https://www.cnblogs.com/China3S/p/4358182.html
Copyright © 2011-2022 走看看