Let consider this question using the project #10 "MoreControlsAndWallpaper"
from
"5. Default projects ( templates ) included
into GUI Generator package.".
If you selected
"Generate FORTRAN Program" in "File" panel of VFC GUI
Generator 3.01, then you'll
see the next files in \GUI Generator\FORTRAN PROGRAMS\MoreControlsAndWallpaper\
:

You have here all necessary files for CVF 6.x project creation. To create this project, you
must:
1. Create new empty project ( "Files" ->"New"->"Project"->"Fortran Windows Application"->...
...empty application... );
2. Insert next files into the created project:
VFC_ButtonDefinedAction.f90
VFC_User_On_Exit.f90
VFC_User_On_Init.f90
MSImg32.lib
VFC.lib
MoreControlsAndWallpaper.rc
3. Select type of the project as "Release";
4. Select "Project"->"Settings" and define application properties as "multithreaded dll"
( use "Fortran" and "C++" tabs for this );
5. Build exe-file...
After these standard steps you'll have
some "executable template", which can be modified
now with respect to your needs.
First interesting subroutine - VFC_User_On_Init.f90:
!---------------------------------------------------------------------------------------
subroutine VFC_User_OnInit(hInstance,ireturn)
integer*4 hInstance,ireturn
!------------------------------------------------------------------
!
! Purpose : It allows user to perform some preliminary operations
! ( open file(s) with initial data, read data etc. )
!
! Parameters : hInstance - handle of application
! ireturn - error code
! = 0 - no error(s)
! = 1 - error(s) appeared
!
!------------------------------------------------------------------
ireturn = 0
!------------------------------------------------
! Put your code below, please
!------------------------------------------------
return
end
|
Its purpose is clear from the comments inside...
Second interesting subroutine - VFC_ButtonDefinedAction.f90
subroutine ButtonDefinedAction(WndNumber,ButtonNumber,ButtonHandle)
integer*4 WndNumber,ButtonNumber,ButtonHandle
!-------------------------------------------------------------------
! Purpose - handler for created button(s)
! Parameters:
! WndNumber - current window number
! ButtonNumber - current button number
! ButtonHandle - current button handle
!-------------------------------------------------------------------
select case(WndNumber)
case(1)
select case(ButtonNumber)
case(1)
!--------------------------------------------------------
! Put here your handler/subroutine for button #1
! Button capture:
! <<Start>>
! Button description:
! == Default window button. Purpose - start calculations...
! ==
! ==
!
!--------------------------------------------------------
case(4)
!--------------------------------------------------------
! Put here your handler/subroutine for button #4
! Button capture:
! <<Exit>>
! Button description:
! == Exit Button
! ==
! ==
!
! Remember, please, that this button will close
! application. But you can't do this manualy
!--------------------------------------------------------
end select
end select
return
end
!===================================================================
! Also you have static control(s) in your program.
!
!------------------------------------------------
! Window #1 Static #1
! Static control capture:
! <<Value of A =>>
! Static control description:
! == Parameter A
! ==
! ==
!
! You can use the next functions for control management :
! call SetVFCStaticCaption(1,1,text_string)
! call ClearVFCStaticCaption(1,1)
! call WriteRealToVFCStaticAsFormatted(1,1,value,fmt_string)
! call WriteRealToVFCStaticUnFormatted(1,1,value)
! call WriteDRealToVFCStaticAsFormatted(1,1,value,fmt_string)
! call WriteDRealToVFCStaticUnFormatted(1,1,value)
! call WriteIntegerToVFCStaticAsFormatted(1,1,value,fmt_string)
! call WriteIntegerToVFCStaticUnFormatted(1,1,value)
!------------------------------------------------
! Window #1 Static #2
! Static control capture:
! <<>>
! Static control description:
! == Parameter A Value
! ==
! ==
!
! You can use the next functions for control management :
! call SetVFCStaticCaption(1,2,text_string)
! call ClearVFCStaticCaption(1,2)
! call WriteRealToVFCStaticAsFormatted(1,2,value,fmt_string)
! call WriteRealToVFCStaticUnFormatted(1,2,value)
! call WriteDRealToVFCStaticAsFormatted(1,2,value,fmt_string)
! call WriteDRealToVFCStaticUnFormatted(1,2,value)
! call WriteIntegerToVFCStaticAsFormatted(1,2,value,fmt_string)
! call WriteIntegerToVFCStaticUnFormatted(1,2,value)
!------------------------------------------------
! Window #1 Static #3
! Static control capture:
! <<Value of B =>>
! Static control description:
! == Parameter B
! ==
! ==
!
! You can use the next functions for control management :
! call SetVFCStaticCaption(1,3,text_string)
! call ClearVFCStaticCaption(1,3)
! call WriteRealToVFCStaticAsFormatted(1,3,value,fmt_string)
! call WriteRealToVFCStaticUnFormatted(1,3,value)
! call WriteDRealToVFCStaticAsFormatted(1,3,value,fmt_string)
! call WriteDRealToVFCStaticUnFormatted(1,3,value)
! call WriteIntegerToVFCStaticAsFormatted(1,3,value,fmt_string)
! call WriteIntegerToVFCStaticUnFormatted(1,3,value)
!------------------------------------------------
! Window #1 Static #4
! Static control capture:
! <<>>
! Static control description:
! == Parameter B Value
! ==
! ==
!
! You can use the next functions for control management :
! call SetVFCStaticCaption(1,4,text_string)
! call ClearVFCStaticCaption(1,4)
! call WriteRealToVFCStaticAsFormatted(1,4,value,fmt_string)
! call WriteRealToVFCStaticUnFormatted(1,4,value)
! call WriteDRealToVFCStaticAsFormatted(1,4,value,fmt_string)
! call WriteDRealToVFCStaticUnFormatted(1,4,value)
! call WriteIntegerToVFCStaticAsFormatted(1,4,value,fmt_string)
! call WriteIntegerToVFCStaticUnFormatted(1,4,value)
!
!===================================================================
|
You could see, that the purpose of this
subroutine - organize the interaction between control elements on
window and user's numerical algorithm. For users experienced in VB/VBA
programming, it'll be very easy
to start working with the subroutine organized by such way. The only things you
must do - create your own
subroutines and call them in the respective place of the provided handler.
Also, you can see here instructions how to use other "passive" elements ( now
static controls only ) for
information output.
Third interesting subroutine - VFC_User_On_Exit.f90.
|
!--------------------------------------------------------------------------------------- subroutine VFC_User_OnExit(ireturn) integer*4 ireturn !------------------------------------------------------------------ ! ! Purpose : It allows user to perform some operations on exit ! ( close file(s) with data etc. ) ! ! Parameters : ireturn - error code ! = 0 - no error(s) ! = 1 - error(s) appeared ! !------------------------------------------------------------------ ireturn = 0 !------------------------------------------------ ! Put your code below, please !------------------------------------------------ return end |
This subroutine allows you to accomplish the
work with resources opened for the work with your
numerical algorithms...