Solution3 of the Visual ClearWin demonstration pack uses the illustration
below. Once you have worked through this it is recommended that you proceed to
Solution4 and so on. The demonstration pack includes a folder called
"Solution". A simple way to start a Visual ClearWin solution is to copy
this folder (making sure that the Fortran project is configured for one of the
.NET modes such as Debug .NET).
This topic describes how to get started with Visual ClearWin. By working
through the following instructions you can produce an application
that looks like this.
When using the resulting application, a floating point value is
entered into the Value box and the square of this value
appears in the Result box when the button is clicked.
The solution consists of two projects; one contains a simple
Fortran executable, the other a C# Form contained in a DLL. We start with the
DLL because it contains names that are used in the Fortran code.
In Microsoft Visual Studio, create a New, Blank
Solution and Add a New Project.
For the type of project, select Visual C# Projects and Windows
Application (you could use a Visual Basic Project if you
prefer). When you do this, a new blank form is displayed in a design view.
In the Properties of this project, under the General
properties, select the Output Type to be a Class Library.
Now construct a form similar to that shown above. Use
components from the Toolbox together with the mouse
to design the form, selecting components from the toolbox and
dragging a rectangle in the design view (you can pin the Toolbox
open by clicking on the pin icon in the caption). Use the Properties
Window for the form and for each component in order to create the
visual attributes that you want. It is not necessary to view the
code for the form.
The input and output boxes on the form must use
a Visual ClearWin control called Double_Box. If this type of control
is not visible in the Toolbox then you can add it by customizing the
Toolbox as follows. Right click on the Toolbox and select Customize
Toolbox. In the resulting dialog, select the tab for .NET
Framework Components. Click on the Namespace header,
scroll down to Salford.VisualClearWin and click on the check box for each
of the Silverfrost controls that are listed. It should only be necessary to
customise the Toolbox once.
In the properties for the button control, make sure that the
DialogResult property is set to None.
In the References for this project, make sure that there is a
reference to Salford.VisualClearWin.
Create a second project to contain the Fortran main program. Add
a New Project and, for the type of project, select FTN95
Projects and FTN95 Visual ClearWin Application.
In the Properties of this project, ensure that it uses
the .NET platform and, in the Linker Options, that
Yes is selected against Windows Application.
Open the Fortran file that has been added to the project for you and
modify the template so that it becomes:
DOUBLE PRECISION x,y
INTEGER FUNCTION DoProcess()
END FUNCTION DoProcess
END MODULE Form1
In the References for this project, select Add
Reference and add a reference to the C# project. Also make
sure that there is a reference to Salford.VisualClearWin.
Ensure that the C# form is built before the Fortran main program by clicking on
Project Build Order in the popup menu for the solution.
Now redirect the class library (DLL) in your existing Visual C# project
so that it is sent to the folder used by your Fortran executable. To do this
open the Properties dialog for the C# project and in the Build
section of the Configuration Properties set the Output
Path to "..\Project1\Debug\NET\" or its equivalent.
The strings that appear in the Fortran program use default
names from the C# project. Theses are "WindowsApplication1"
which is a misnomer for the C# DLL, "Form1" for the name of the Form, and
"double_Box1", "double_Box2", and "button1" for controls in the Form.
The Fortran module called VC is a Silverfrost module that is
used to access the Visual ClearWin library. vcCreateDialog@, vcLinkDouble@,
vcOnClick@ and vcShowDialog@ relate to methods in this library. This
library includes a class called Dialog that provides a
wrapper for the Microsoft Forms class. dlg1 is an instance of this class.
vcCreateDialog@ creates a Dialog from the form contained in the C# project.
The first call to vcLinkDouble@ identifies x with the value obtained
from the input box in the form. The second call identifies y
with the value in the output box.
vcOnClick@ connects a button click event to the function called
ButtonClick. As a result of this code, when you enter a number in the
input box at run time, the value is automatically copied to x. When you click
on the button, the callback function is called and y is computed as the
square of x. This value automatically appears in the output box
because y is linked to it.
vcDisplayDialog@ makes the form visible and does not return until it is
closed by the user.
This example illustrates the main features of Visual ClearWin. The design
view of a C# (or VB) form is used to create the visible form. In addition
to the features illustrated above, the design can include components such
as images, menus, toolbars, status bars, and common dialog boxes. Standard
controls such as list boxes, combo boxes, tree views, list views and tab
controls can be populated at design time or (where necessary) at run time.
Static text is provided as a Label component and this can use various
fonts and colours. An image is provided as a PictureBox component. An image
file is then attached to the PictureBox using the Image property. This can use
one of a number of image formats including BMP, ICO, JPEG and GIF (although the
design view can sometimes lock when using a GIF image).
Links are programmed between the controls in a form and Fortran
variables using methods such as vcLinkDouble@, vcLinkInteger@ and
vcLinkText@. These provide dynamic linking. If two controls share the same
Fortran variable then Visual ClearWin automatically updates one when the other
is changed. Alternative methods such as vcGetInteger@ and vcSetInteger@ allow
you to get and set values without dynamic linking.
An event in a form can be made to trigger a Fortran callback function.
vcOnClick@ is used for click events on buttons, menu items and toobar
buttons whilst vcOnEvent@ allows you to link other events to a
vcCreateDialog@ is commonly called to create a form. For simple
dialogs that require no linking etc. you can call vcShowMessageBox@ which
combines vcCreateDialog@ with vcShowDialog@. The alternative is to call
vcCreateMdiChild@. This is used to create a child from a MDI (Multi
Document Interface) parent.
vcDisplayDialog@ is used to display a modal dialog. A modal dialog is one that
must be closed before other dialogs in the application can be used. The
alternative is to call the routine vcShow@ in order to display a modeless
dialog. If we were to use vcShow@ in the above program it would return
immediately and terminate the application. Modeless dialogs are used for child
dialogs that can be left open. For example, vcCreateMdiChild@ should be
followed by a call to vcShow@.
A set of demonstration solutions has been written to illustrate the main
features of Visual ClearWin.
The application described above but using a C# executable. See
A simple C# form.
The application described above but using a VB executable.
The application described above.
The application used in the "Factoriser" tutorial of ClearWin+.
Illustrates various controls.
Illustrates menus, toolbars, status bars and accelerator keys.
Illustrates graphics drawing (drawing lines, filling regions, drawing
text and images).
Illustrates graphics drawing (pixel-by-pixel drawing).
Illustrates using common dialog boxes.
Illustrates a multiple document interface.
Illustrates a single document interface.
Illustrates populating a ListBox at run time.
Illustrates populating a ComboBox at run time.
Illustrates populating a ListView at run time.
Presents a fully functional tree editor that illustrates populating a TreeView
at run time.
Presents an elementary Paint program that illustrates advanced features of the
Uses an Explorer_Box control to create a simple Internet Explorer program.
Uses an Explorer_Box to create a simple WYSIWYG HTML editor.
Uses an Explorer_Box to create a simple Help viewer.
Illustrates enhanced menus.
Illustrates a MDI based on a tab control.
Controls in your application are automatically given the
standard Microsoft� Windows� XP style of appearance. This is done
for you by the linker DBK_LINK which plants code that makes your application
use ComCtl32.dll version 6 rather than the default version 5. The result
is that when your application is run under Windows XP it will use
this style. Most controls will then use the new
style by default but controls that have the FlatStyle property (in
particular the GroupBox control and controls derived from the ButtonBase
class) must have this property set to FlatStyle.System. In exceptional
circumstances you may wish to avoid the use of the Windows XP style. For
example, at the time of writing, the XP style for tab controls is unfinished
and does not display correctly when the tabs are along the bottom of the
control. The style can be switched off by using /no_xp_style on
the DBK_LINK command line (or the FTN95 command line if DBK_LINK is called
from FTN95). For further information about XP styles see
Using Windows XP Visual Styles.