Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

windows variable types in fortran

LRaim
New Contributor I
933 Views

I was trying (unsuccessfully) to find fortran definitions of windows variables (e.g. WPARAM, LPARAM, HWND, etc.)  and  system functions interface in the intel documentation or include files.
Where is it possible to locate such matter ?

Best regards

 
 

 
 

 

0 Kudos
9 Replies
mecej4
Honored Contributor III
933 Views

Look in the compiler's INCLUDE directory. Instead of the large number of defined types (from C typedefs) that are simply different names for integers of various sizes, the Fortran declarations simply use INTEGER(<the relevant size>) :: <variable>. For instance, you find in user32.f90

      integer(HANDLE) hwnd ! HWND hwnd

0 Kudos
LRaim
New Contributor I
933 Views

Thanks Mecej4.

However, looking for example at the Post Message function one finds:

============================================================

INTERFACE 
FUNCTION PostMessage( &
        hWnd, &
        Msg, &
        wParam, &
        lParam)
use ifwinty
  integer(BOOL) :: PostMessage ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'PostMessageA' :: PostMessage
  integer(HANDLE) hWnd ! HWND hWnd
  integer(UINT) Msg ! UINT Msg
  integer(UINT_PTR) wParam ! WPARAM wParam
  integer(LONG_PTR) lParam ! LPARAM lParam
 END FUNCTION
END INTERFACE

===========================================

but LONG_PTR is not defined in the index of the compiler documentation and I need to find its definition in terms of the intrinsic fortran data types. ... but  I can find its definition in another file IFWINTY.F90, and so on ... 
What I would like to point out is that this matter should be well documented by Intel. A user of the IVF compiler "FOR WINDOWS" should not rely on the kindness of the members of this forum.

Best regards 

0 Kudos
Steve_Lionel
Honored Contributor III
933 Views

The definitions you seek are in module IFWINTY - the source is also in the compiler include directory. Most of the Windows types are defined with the same spelling, but some have variants due to conflicts with Fortran keywords (INT for example). Most derived types have _T suffixes. This module is USEd by the other Windows API modules such as KERNEL32, so you rarely have to invoke it directly.

As noted, for things such as WPARAM and LPARAM, you need to use INTEGER(WPARAM), etc., as Fortran doesn’t (yet) have type aliases (typedefs in C).

0 Kudos
Robert_van_Amerongen
New Contributor III
933 Views

Luigi,

take a look at

https://docs.microsoft.com/en-us/windows/desktop/winprog/windows-data-types

where you will find additional information on data type. Hopes it helps you.

Robert

0 Kudos
LRaim
New Contributor I
933 Views

Robert van Amerongen wrote:

Luigi,
take a look at
https://docs.microsoft.com/en-us/windows/desktop/winprog/windows-data-types
where you will find additional information on data type. Hopes it helps you.
Robert

Robert,
I know the document quite well: developing from many years all windows interfaces, to run Fortran simulation engines, in C++ with MS Visual Studio.
What I would expect to find, in the body of Intel Fortran documentation, is a similar/parallel document listing the corresponding Fortran types.

Regards


 


 

0 Kudos
Steve_Lionel
Honored Contributor III
933 Views

As I noted, they’re all in the source for module IFWINTY. If the documentation had a list, it would be enormous and out of date immediately.

That said, you should also look at https://software.intel.com/en-us/compiler_winapp_f

0 Kudos
andrew_4619
Honored Contributor II
933 Views

My opinion.  I use the windows API all the time. It would be a huge task and a bit pointless for Intel to document them for Fortran. The reference is at MSDN, you then need to look at IFWIN.f90 (and it's sub-sets) to see how ta particular API has been implemented in Fortran as there can be more than one way.  Finding things in the fortran includes is fast using the VS search tools.  This seems just fine by me and IMO If this is too complicated for a user then maybe they probably aren't going to be able to program in the Windows API's anway.....  

0 Kudos
LRaim
New Contributor I
933 Views

Andrew,
to the end the discussion is not related to expertise in using windows API but about the quality of the documentation produced by Intel accompanying its Fortran compiler. My opinion is that its quality is very far from sufficiency.   

0 Kudos
JVanB
Valued Contributor II
933 Views

In reference to Quote #4, Intel gives most derived type T_ prefixes; _t suffixes is the C language way. When I wrote a bunch of Windows stuff in gfortran I was using the suffix formulation and of course later had to change it all to prefixes to be consistent with ifort usage :(

0 Kudos
Reply