Fortran Coder

查看: 9474|回复: 4
打印 上一主题 下一主题

[绘图界面库] 自己制作的winteracter小教程

[复制链接]

66

帖子

16

主题

0

精华

专家

F 币
452 元
贡献
271 点
跳转到指定楼层
楼主
发表于 2016-8-22 12:08:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 大头鼹鼠 于 2016-9-8 16:58 编辑

                                                                                    利用winacter实现用户登录与软件操作
看本教程前请先学习 http://fcode.cn/guide-80-1.html 入门指导,本教程的主要目的是开发软件的登录窗口,某些设备中的软件在操作的时候是需要验证用户与密码的,这样可以追溯软件的操作。
在学习winteracter以及fortran中得到了《楚香饭》大力支持,在此表示由衷的谢意

1)首先利用winteracter创建登录窗口的对话框,因为是登录框,所以不需要给登录框添加标题和系统工具栏

2)创建字符串型的输入框,分别为用户用和密码的输入,同时创建登录按钮(IDOK)和取消按钮(IDF_CANCLE),然后将username和pasword对应的输入框中的文字清除,登录框可以可以加入一些图片或3D的按钮,大家可以尝试使其看起来很漂亮


3)创建主运算程序的对话框,三个输入框的类型的都是Real型的,添加运行按钮(IDRUN)和取消按钮(IDCANCEL),三个Real类型的框依次是IDF_real1,IDF_real2,IDF_real3



4)然后在VS中编译,并运算
4-1)输入的密码不正确

4-2)输入密码真确并显示计算结果


5)以下是文件的代码

[Fortran] 纯文本查看 复制代码
01PROGRAM PROGRESS
02        !
03              USE WINTERACTER
04              USE RESID
05        !
06              IMPLICIT NONE
07        !
08        !  Number of iterations parameter
09              TYPE(WIN_MESSAGE)  :: MESSAGE
10              LOGICAL            :: QUIT=.FALSE.,login=.false.
11              INTEGER            ::ITYPE
12              CHARACTER(len=10)  ::USERNAME,PASSWORD 
13              REAL               :: NUM1,NUM2,RES_NUM
14 
15        !  Initialise Winteracter 初始化窗口
16        !
17              CALL WInitialise()
18        !
19        !  The root window is not needed for this demonstration, so hide it.
20        !
21              CALL WindowOpen(HideWindow)
22               
23         
24         
25         
26!       !登录窗口界面
27!       
28           CALL WDialogLoad(IDD_DIALOG001)
29           CALL WDialogShow(itype=Modeless)
30        DO WHILE(.NOT.LOGIN)  
31           CALL WMessage(ITYPE,MESSAGE)
32            SELECT CASE (ITYPE)
33              CASE (PushButton)   
34                  SELECT CASE (MESSAGE%VALUE1) 
35                  CASE (IDOK)
36                       CALL WDialogGetString(IDF_STRING1,USERNAME)     
37                       CALL WDialogGetString(IDF_STRING2,PASSWORD)
38                          IF((PASSWORD=="admin").and.(USERNAME=="admin")) then  !判断密码是否正确,也可以将密码放入数组中,
39                           !这样可以实现多用户登录                        
40                          login=.TRUE.
41                          ELSE
42                           CALL WMessageBox(OKONLY,ExclamationIcon,CommonOK,'Username or Password is not correct,please try again','Caution')    !密码不正确的提示
43                           login=.false.  !密码不对返回再次输入
44                          end if     
45                   CASE (IDF_CANCLE)   !不登录软件,直接退出  
46                     stop    
47                 END SELECT
48            END SELECT
49         END DO            
50         CALL WDialogUnload()  !这个步骤很重要即登录窗口登录后,验证密码无误将登录窗口关闭
51          
52          
53        !主程序窗口
54     
55            CALL WDialogLoad(IDD_DIALOG002)
56             
57            CALL WDialogShow(itype=Modeless)
58     
59       !****************************************************
60        !****************************************************
61100        DO WHILE(.NOT.QUIT)   
62              CALL WMessage(ITYPE,MESSAGE)         
63              SELECT CASE (ITYPE)
64              CASE (PushButton) 
65                  SELECT CASE (MESSAGE%VALUE1) 
66                  CASE (IDRUN)
67                   CALL WDialogGetReal(IDF_real1,num1)    !****
68                   CALL WDialogGetReal(IDF_real2,num2)    !这两个密令用来获取输入的数据
69                   RES_NUM=num1+num2                      !将输入的数据相加
70                    CALL WDialogPutReal(IDF_real3,RES_NUM) !将结果输出到结果框中
71                    QUIT=.FALSE.
72                   CASE (IDCANCEL)
73                    QUIT=.TRUE.
74                  END SELECT
75              END SELECT
76           END DO
77              CALL WindowClose()
78              STOP
79            END PROGRAM PROGRESS

评分

参与人数 1F 币 +5 贡献 +5 收起 理由
978142355 + 5 + 5 很给力!

查看全部评分

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

21

帖子

4

主题

0

精华

熟手

F 币
149 元
贡献
78 点

规矩勋章爱心勋章

沙发
发表于 2016-9-6 14:17:01 | 只看该作者
我喜欢这篇,以后看看

66

帖子

16

主题

0

精华

专家

F 币
452 元
贡献
271 点
板凳
 楼主| 发表于 2016-9-8 17:03:27 | 只看该作者
渡箭 发表于 2016-9-6 14:17
我喜欢这篇,以后看看

编写软件的时候一定要多看 winteracter的help理解它里面子程序的意思,可以事半功倍

1

帖子

0

主题

0

精华

新人

F 币
13 元
贡献
2 点
地板
发表于 2020-3-26 13:30:45 | 只看该作者
请问有winacter的下载资源么

8

帖子

1

主题

0

精华

入门

F 币
42 元
贡献
16 点
5#
发表于 2024-12-7 12:13:16 | 只看该作者
根据你的示例我也能做对话框界面了,再请教一个新问题:在无界面前的fortran程序前增加对话框输入数据后(正确的),原本dos窗口不再出现了,许多write(*,*)或print *输出没有了,程序也停不下来,只能结束进程
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2025-4-29 20:45

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

快速回复 返回顶部 返回列表