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...