本帖最后由 大头鼹鼠 于 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] 纯文本查看 复制代码 PROGRAM PROGRESS
!
USE WINTERACTER
USE RESID
!
IMPLICIT NONE
!
! Number of iterations parameter
TYPE(WIN_MESSAGE) :: MESSAGE
LOGICAL :: QUIT=.FALSE.,login=.false.
INTEGER ::ITYPE
CHARACTER(len=10) ::USERNAME,PASSWORD
REAL :: NUM1,NUM2,RES_NUM
! Initialise Winteracter 初始化窗口
!
CALL WInitialise()
!
! The root window is not needed for this demonstration, so hide it.
!
CALL WindowOpen(HideWindow)
! !登录窗口界面
!
CALL WDialogLoad(IDD_DIALOG001)
CALL WDialogShow(itype=Modeless)
DO WHILE(.NOT.LOGIN)
CALL WMessage(ITYPE,MESSAGE)
SELECT CASE (ITYPE)
CASE (PushButton)
SELECT CASE (MESSAGE%VALUE1)
CASE (IDOK)
CALL WDialogGetString(IDF_STRING1,USERNAME)
CALL WDialogGetString(IDF_STRING2,PASSWORD)
IF((PASSWORD=="admin").and.(USERNAME=="admin")) then !判断密码是否正确,也可以将密码放入数组中,
!这样可以实现多用户登录
login=.TRUE.
ELSE
CALL WMessageBox(OKONLY,ExclamationIcon,CommonOK,'Username or Password is not correct,please try again','Caution') !密码不正确的提示
login=.false. !密码不对返回再次输入
end if
CASE (IDF_CANCLE) !不登录软件,直接退出
stop
END SELECT
END SELECT
END DO
CALL WDialogUnload() !这个步骤很重要即登录窗口登录后,验证密码无误将登录窗口关闭
!主程序窗口
CALL WDialogLoad(IDD_DIALOG002)
CALL WDialogShow(itype=Modeless)
!****************************************************
!****************************************************
100 DO WHILE(.NOT.QUIT)
CALL WMessage(ITYPE,MESSAGE)
SELECT CASE (ITYPE)
CASE (PushButton)
SELECT CASE (MESSAGE%VALUE1)
CASE (IDRUN)
CALL WDialogGetReal(IDF_real1,num1) !****
CALL WDialogGetReal(IDF_real2,num2) !这两个密令用来获取输入的数据
RES_NUM=num1+num2 !将输入的数据相加
CALL WDialogPutReal(IDF_real3,RES_NUM) !将结果输出到结果框中
QUIT=.FALSE.
CASE (IDCANCEL)
QUIT=.TRUE.
END SELECT
END SELECT
END DO
CALL WindowClose()
STOP
END PROGRAM PROGRESS |