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

Announcement: XFT Library 1.2.14 (IVF 9.0 supported)

Jugoslav_Dujic
Valued Contributor II
1,375 Views




You're welcome to try and test my XFT Library (Release Candidate 1), used for creating Win32 GUI applications in Compaq Visual Fortran. XFT is a framework (kindof similar to QuickWin but far more powerful, or MFC but less powerful) which contains Win32 API wrappers for most frequently used tasks. The package contains library with source code, documentation (.chm) and few bells & whistles wizards to automate the most common tasks. It is a free source with no restrictions on usage, except the requirement to maintain attribution to the original author(s) if its source code is modified/redistributed.


XFT integrates into CVF 6.x compilers with LIB, INCLUDE and SOURCE directories and adds its items to VS Tools menu. You have to have a CVF 6.x compiler to use it normally; with DVF 5.0D and IVF 8, you will be able to install only sources and documentation. XFT also contains XFLOGM 2.0, which is (mostly) fully compatible with DFLOGM/XFLOGM.


You can download and install XFT from my homepage


(oh, I know it's about time to move it to a normal ISP, but it will be

there for a while).


Follow the link to "download" section and download & run XFT.exe. Please read the first few pages in the .chm file or the web for a brief introduction and to get you started. XFT Full installation adds a "Fortran XFT Application" wizard to File/New/Projects CVF item, which creates skeleton applications for you.


Any comments, bug reports, documentation errors, ommissions, web page errors, suggestions, and, of course, contributions are welcome. Please reply to my personal e-mail rather than here for code-specific issues; I would appreciate if the subject line on the topic contains word "XFT" in one way or another, so that the e-mail in my inbox gets sorted properly.


Jugoslav

Message Edited by JugoslavDujic on 05-24-2004 04:38 PM

Message Edited by JugoslavDujic on 10-06-2004 03:04 PM

Message Edited by JugoslavDujic on 08-09-2005 01:50 PM

0 Kudos
19 Replies
durisinm
Novice
1,375 Views

Jugoslav,

Can you give an example of what your XFT library does and why it's desirable to use?

Mike D.

0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,375 Views
Basically, it is a framework for Win32 GUIs, meant to be much simpler to use than pure Win32 application. For example, this is a XFT Code to create a blank SDI application (remind you, this is few hundred lines using pure Win32 code):
logical function XInit(szCmdLine, nCmdShow)
use XFT
character(*), intent(in):: szCmdLine
integer, intent(in):: nCmdShow
XInit = XCreateSDIApp(sCaption="My App")
end function XInit
and then continue adding menus& callbacks for them, drawing code... (there's even a wizard which creates blank callbacks of appropriate prototype for you). The coding philosophy resembles DFLOGM in some aspects (create an emptyGUI element or load it from resource, set its properties, register/write a callback if necessary).
On the second level, you don't have to use it all, but you can addsome functionalityto existing Win32 or QuickWin applications. For example, one frequently has to subclass a QuickWin window to achieve missing functionality; with XFT, you can subclass it and add it like:
type(X_WINDOW), pointer: xQWFrame lret = XBindWindow(GETHWNDQQ(QWIN$FRAMEWINDOW), xQWFrame) lret = XSetHandler(xQWFrame, WM_CLOSE, QWFrame_OnClose)
...
logical function QWFrame_OnClose(xWnd) result(bOK) !Called when the frame window is to be closed type(X_WINDOW):: xWnd iRet = MessageBox(..."Save Changes?"...) if (iRet = IDYES) then call SaveMyData() !Save data & exit bOK = .true. else if (iRet = IDNO) then bOK = .true. !Just exit else if (iRet = IDCANCEL) then bOK = .false. !Do not exit end if end function
Finally, you can use just parts of it, like XFTGDI (encapsulating tedious Win32 GDI drawing) or XFTFile (File common dialogs).
It's not as comprehensive as MFC or Winteracter, and it doesn't pretend to encapsulate all of Win32 API, but hey, it's free :-).
Jugoslav

Message Edited by jugoslavdujic on 01-21-2004 05:59 AM

0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,375 Views
New version, 1.0 RC4 is uploaded to my home page. It's just bug fixes (thanks to Sumit Mukherjee and Mike Gaitens) -- see release notes; new features will wait for a while.
Jugoslav
0 Kudos
sumitm
Beginner
1,375 Views
Mike,
You had a question about desireability of XFT.
Basically, I have been a low end (expertise wise) user who does not know much about Win32 and does most of my applications in Quickwin. If you were someone who wanted to spice up your applications by adding Colors and bitmaps to dialog boxes and button and other controls, XFT offers a very quick and easy way to do it. All you have to do is replace use dflogm with use xflogm. Win32 and Quickwin both use dflogm so xflogm will help both type of users ( Quickwin and Win32). It does much other high end things also that Jugoslav explained earlier.
Also I would like to mention that he has a XFTGDI module for graphical manipulations. I use it extensively for making console executeables that run an ASP.NET application (someone else usingC# uses my executeables with command line arguments to develop web Apps)and makes nice graphical outputs. XFTGDI offers a way to display images on screen and also save to memory as is required for console applications on a web that does not have a desktop context. Only thing I wish for the furture of IVF, is for a way to save the images not only as windows bitmaps (*.bmp)but also as jpg's or png's so that they are not that massive in size and easy to download and display on the web. My C# developer has to reconvert my 2.5MB .bmps to 65kb .pngs so that they display fast enough on IE. I know languages like Delphi offer built in jpeg converters. Hopefully IVF will do that someday for users like me who do not know how to program a bitmap into a jpeg output.
This was just my perspective and as you may note there is much more in it for others to make use of.
Thanks to Jugoslav
0 Kudos
Paul_Curtis
Valued Contributor I
1,375 Views

Jugoslav --

I note that XFT is still offered for CVF (only?). Have you tried to port your Win32 API wrappers to the Intel compiler? This will be the real test of IVF compatibility.

I have purchased the Intel compiler, but haven't had time yet to see whether Intel supports/supplies all the CVF Interface modules and the like. I have commercial products to support andcannot afford any extended period of discovery to find the Intel environment does not duplicate all the CVF features, particularly with respect to Win32 API support.

Best regards,

Paul Curtis

0 Kudos
Steven_L_Intel1
Employee
1,374 Views
Yes, Intel Visual Fortran supplies all the Win32 APIs that CVF did. You can even use the same module names.
Jugoslav told me that his XFT library seems to work with IVF, but he doesn't have a nice install solution yet, so you have to configure it manually. I'm sure he'll comment once his day begins.
0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,374 Views
Well, my workday began at 17:00 CET (I was away from my office).
I successfully compiled XFT and "hello, world" sample under IVF8. So, my current advice for IVF is the same as for CVF6.0x -- you can install it, and then rebuild the sources. If you still use both CVF and IVF, I recommend only changing output directories for XFT.lib and module files so that they don't get overwritten; add these directoriesto IVF's "Include"and "Lib" search paths and it should work.
If you rebuild, also pay attention to the calling convention; if you "Extract Compaq Visual Fortran items", it will give you "CVF" (stdcall, mixed_str_len_arg". Youshould change it to "Default" (cdecl, nomixed_str_len_arg) and build the using projects with "Default". In any case, the calling convention used to buildXFT should be the same as the one for your project.
I'll try to automate the installation process for IVF as well when I find some time. Unfortunately, application wizards from VS6 and VS.NET are 100% different, so this feature will wait a while.
Thanks for your interest.
Jugoslav
0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,375 Views
Updatere porting XFT on IVF: alas, I've just discovered two serious IVF bugs which preclude usage of XFT on IVF8. (See this thread.) To sum up, if a FUNCTION returning POINTER appears as an expression as an actual argument, its result will not be passed correctly to the caller. XGetWindow()function is the one, and it's used in this contexton mere 24 places within XFT code.
I screwed combo box callbacks in RC4 while fixing something else; new update will come soon.
Jugoslav
0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,375 Views
...RC5 is there, with several problems fixed (mostly XFLOGM-related).
I have in mind how XFTToolbar will look like (since toolbars have much in common with menus), so I have it in plans for the next update, which will not be a "RC" anymore. Official IVF8 release will see the daylight as soon as IVF8 patch with above-mentioned bug fixes is released.
Jugoslav

Message Edited by JugoslavDujic on 05-24-2004 04:42 PM

0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,375 Views
I know I'm becoming a major PITA with these announcements, but then, initial release ofIVF 8 had at least ten times more bugs than XFT >:). OK, there's another service release uploaded (1.0 RC6). As a bonusfor thosewhosustain me (and my bugs :-D), there's also new XContextHelp sample, illustrating how to add HTMLHelp-based context help to dialog projects.
Jugoslav
0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,375 Views
XFT 1.0.10now finally supports IVF -- youshould download the latest 8.1.021 compiler to use it (although it should work with older versions as well -- I had problems with building the library itself though).Known issues with release for IVF8 are:
- It does not have AppWizard, so (provided you have CVF installed) you caneither generate skeleton code in CVF or make it from scratch.
- Samples on my home page do not yet have appropriate vfproj/sln files
- If you are converting old CVF XFT projects to IVF, pay attention to use default calling convention and string argument passing instead of "CVF".
Otherwise, the release (still) contains only bug-fixes, i.e. no major additions. See Release Notes for more information.
Jugoslav
0 Kudos
keefer
Beginner
1,375 Views
Jugoslav,
With all that you have contributed to this forum, you could never be a PITA to anyone. We owe you too much.
Regards,
Keith
0 Kudos
Steven_L_Intel1
Employee
1,375 Views
Seconded.
0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,375 Views
Apart from my ultimate return from the army, I'm pleased to announce XFT 1.2.14 The most important new features are:

* Support for IVF 9.0
* AppWizard for VS.NET (IVF)
* Enhanced options for AppWizard (toolbar, view window...)
* XFTPrint module (see updated XTabEditor sample)
* XFTCaret module (thanks to Mike Gaitens)

Also, a new release is coming soon. Stay tuned...

Jugoslav
0 Kudos
sumitm
Beginner
1,375 Views
Jugoslav,
Thanks for posting the XFT IVF8/9 update.
I am trying to convert a CVF program of mine to IVF9 that uses your xftgdi
I get errors like
B error LNK2001: unresolved external symbol _XFLOGM_mp_DLGEXIT@4
B error LNK2001: unresolved external symbol _XFLOGM_mp_DLGEXIT@4
B error LNK2001: unresolved external symbol _XFLOGM_mp_DLGMODAL@8
B error LNK2001: unresolved external symbol _XFLOGM_mp_DLGMODAL@8
B error LNK2001: unresolved external symbol _XFLOGM_mp_DLGSETRETURN@8
B error LNK2001: unresolved external symbol _XFLOGM_mp_DLGSETRETURN@8
B error LNK2001: unresolved external symbol _XFLOGM_mp_PXDLGINIT@12
B error LNK2001: unresolved external symbol _XFTCTRL_mp_XCTLGETCHAR@20
I have added the xft.lib file to the project (incidentally there is no option to add it as .lib file in resource in IVF9 . It is just add all files *.*) So I have added it to source (I have tried it in resource also, did not make a difference)
Also do you have some compiled IVF9 workspace samples. All samples for download were CVF specific and I did not get them succesfully converted to IVF.
I have also tried adding xft.lib (which compiles fine) to Project Settings Linker Input and it did not help.
Thanks for any help.
Also I got my opengl portion screwed up. I can compile the individual projects that came with the NIST package 1.2.8 but in my application I get linker errors
B error LNK2001: unresolved external symbol _OPENGL_GLUT_mp_F9XGLUTATTACHMENU@4
B error LNK2001: unresolved external symbol _OPENGL_GLUT_mp_F9XGLUTINITWINDOWPOSITION@8

Can you think of something that I am messing up. I have all the f90GL,GLUlibs in the include path
Thanks as always for your HELP.
Sumit
0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,375 Views
Hi Sumit,
I am trying to convert a CVF program of mine to IVF9 that uses your xftgdi
I get errors like
B error LNK2001: unresolved external symbol _XFLOGM_mp_DLGEXIT@4
In addition (as stated in XFT release notes), you must set the IVF calling convention and string argument passing (after all args) to the default one when you convert a CVF project (Project Properties/Fortran/External Procedures category). Don't forget to do it for both debug and release configurations.

Also do you have some compiled IVF9 workspace samples. All samples for download were CVF specific and I did not get them succesfully converted to IVF.
Sorry for inconvenience. Some samples I recently uploaded do have appropriate .vfproj files, but most indeed don't. In the meantime, you can convert the projects in IVF and fix the calling convention setting above.
I have also tried adding xft.lib (which compiles fine) to Project Settings Linker Input and it did not help.
That's probably the right place.
Also I got my opengl portion screwed up. I can compile the individual projects that came with the NIST package 1.2.8 but in my application I get linker errors
B error LNK2001: unresolved external symbol _OPENGL_GLUT_mp_F9XGLUTATTACHMENU@4

Calling convention setting above will probably fix these as well.
Regards
Jugoslav
0 Kudos
sumitm
Beginner
1,375 Views
Thanks Jugoslav,
That got rid of almost all my linker errors , both (XFT and f90GL). I am down to 4 Linker errors now. I tried searching my code for GETEXCEPTIONPTRSQQ or QWGraphWndProc etc andcannot find anything. They must be in some of default libs I am using.
B error LNK2019: unresolved external symbol ___pxcptinfoptrs referenced in function _GETEXCEPTIONPTRSQQ
B error LNK2019: unresolved external symbol __beginthread referenced in function _for__access_threadstor_threads
B error LNK2019: unresolved external symbol __beginthreadex referenced in function __QWGraphWndProc@16
B error LNK2019: unresolved external symbol __beginthreadex referenced in function _WinMain@16
B error LNK2019: unresolved external symbol __endthread referenced in function _for__thread_clean
Can you suggest where I should look .
Also good thing is I could make my CVF application co-exist with the IVF one with 2 versions of XFT and 2 versions of f90GL (i dont know how the glut32.dll in system folder works for both). Maybe I will find something when I get this one going...
Thanks for your unwavering help.
Thanks for all
0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,375 Views
These symbols are from C multi-threaded library -- make sure you link against both Fortran and C multi-threaded libraries (it appears you do have fortran one, as implied by QuickWin, but C run-time library setting appears to be broken).

Jugoslav
0 Kudos
sumitm
Beginner
1,375 Views
Thanks for your help.
Its working.
0 Kudos
Reply