Welcome to the F3C! This is the documentation for these funny little things which I've spent some time creating. Now they are finally here... ready for all to see, use, and make a lot better.
Without any further ado, here is the table of contents.
Basic information about the F3C
The F3C is a set of C++ classes which are "wrappers" for various Windows API's, which will hopefully make programming for Windows much less of a painful task than it is normally.
The set of components cover things like Windows, buttons, edit controls, Registry, filesystems, files, and even threads! The list is by no means complete, but it is a good start.
There are several bugs in the F3C, including one that is proving very hard to squash - but they are being worked on, steadily and slowly. If you can help - please do! It is a lot of work for one person to do.
[
Known Bugs (and workarounds)
I'm sorry - there are some bugs. I'd love for there not to be, but that's just a fact of programming life. Some bugs I eliminated, but a few remain, just to annoy us all. I think I have identified the major ones, and for some, workarounds have been developed.
- Your compiler may complain about lots of unknown escape sequences, around line 600, in gui_controller_end.h. It will only occur if you have just a few components included. To work around this, also include static.h, scrollbar.h, button.h, timer.h, and trayicon.h. If you are not using these components, they should not affect your executable size much. I believe that this is a compiler problem, related to MinGW - but don't hold me to that.
- This bug has been fixed as of 26th June, 2002! You create a RichEdit, and when you click inside it (to type into it) it crashes with an Access Violation. Haven't figured this one out yet - I don't have a clue why it crashes. The only workaround I have developed is simply not to use the GUI controller with the RichEdit control, but this is really unacceptable. If you can fix this one, then please, please do! It's nabbed me for too long! It turns out this bug was a lack of the "CALLBACK" keyword in the GUI controller component callback function. I had dealt with the same bug in another program (more than once) that caused mysterious crashes that could not be traced to a particular point, all dealing with DLL's and them calling each other. I'm glad to finally have this resolved.
- The String class may occasionally produce strange strings, which might be parts of the last string that you dealt with. I think I have a memory allocation problem, where it allocates old memory, but I'm not sure about that. Sometimes the string class will even crash with an Access violation - I'm not sure why this is happening, and unfortunately, when it comes time to debug it, I can not reproduce the same effects. I'll get this one eventually - you can use the string class, but if it starts to not work, then try to work around it. Sorry! Most of this has been resolved with some rewrites of certain code. However, problems may still occur; so keep this in mind.
- The fRADIOCONTROL dies with an access violation if you allocate more controls than you use. It only dies when you try to use it (ie, click on a control). The code needs a re-write, and I'll get to it... for the moment, making sure that you use all controls is the way around this one.
A lot of the sections of classes have not been tested, so any unexpected results - play with it, check out the F3C code for it - I may have missed something.
I apologise extensively for this; I'd love for there to be no bugs, but that is just a dream to all but the best programmers...
[
Components
What follows is a list of all the components that are currently available as part of the F3C. Any components marked with an asterisk may either not work or not fully work.
- APPLICATION - basic application management
- bstring - the string class
- fBUTTON - a GUI button - and a checkbox, radio button, groupbox, toggle button...
- CGI Header - CGI functions for CGI programs
- fCOLOURCHOOSER - a colour chooser common dialog.
- fCOMBOBOX - a GUI combobox
- F3C debugging libraries
- fDIALOG - creating and managing dialogs
- fDRAGANDDROP - manage drag and drop file lists
- fEDIT - a basic edit control (also a MEMO control)
- fFILESTREAM - read and write files
- fFILESYSTEM - find a directory listing, play with files...
- fFOLDERSELECT - one of those common dialogs to select a folder
- fFONT - fiddle with fonts
- fFONTCHOOSER - a font chooser common dialog
- (*)fFONTNAMER - a class to retrieve installed font names
- fFORM - a window class
- _GRAPHICSBASE - the base graphics class, which has definitions for all the other graphics classes
- _GUIBASE - the base GUI class, which has definitions for all the other GUI classes
- fHOTKEYSELECTOR - one of those edit control hotkey selectors
- fICON - a class to deal with icons
- fIMAGELIST - an imagelist class
- fLISTBOX - a listbox
- fLISTVIEW - a listview class, for looking at icons
- fMAINMENU - the menu class, for creating and displaying menus
- fMOUSE - for doing strange things with the mouse...
- fMULTIMONITOR - for enumerating the physical monitors attached to a system.
- fOPENDIALOG - a common dialog, the open dialog
- fPOPUPMENU - the popup menu class
- fPRINTER - the class for printing things
- fPRINTERDIALOG - a common dialog shown before starting a print job
- fPROGRESS - a GUI progress bar
- fRADIOCONTROL - a class to manage a set of radio controls
- fREGISTRY - read, write, and fiddle with the registry
- fSAVEDIALOG - a common dialog for saving
- fSCREEN - change screen modes, get screenmodes...
- fSCREENGRAPHICS - draw on windows
- (*)fSCROLLBAR - create and manage a scrollbar
- (*)fSHORTCUT - create and read shortcuts (not working at all)
- fSOUND - play WAVE sounds, play MIDI files
- fSTATIC - a static control, to display text or images without input.
- fSTATUSBAR - status to the people...
- tFDIB - serious bitmap class
- fTHREAD - spawn threads
- fTIMER - execute events every so often
- (*)fTOOLBAR - tool your users...
- fTRACKBAR - select numbers from a line
- fTRAYICON - implement a tray icon
- fUPDOWN - an updown control
- fWINSOCK - a winsock class
Additionally, here is a quick and dirty list of Virtual Keycodes.
And that's the list for the moment. If you write any more classes, or fix the ones that are there, again, share it with me, and I'll pass it along to everyone! Of course, you will get the credit!
[
Credits and Acknowledgements
There are several people responsible for this... thing. First and foremost is Daniel Foote (d_foote@spyring.com), who actually wrote these classes. After that is Mr Miles (aka. theForger, http://www.winprog.org). Mr Miles wrote the tFDIB class, and also wrote these great tutorials for me to learn from.
After that comes everybody else - for at least looking at these
classes, as non-functional as they are...
[