This class handles resizable Form views and it's based on my ResizableLib class library (see article).
The user will have the ability to resize the Form, with consequent rearrangement of child windows. If the Form window gets smaller than its minimum size, it becomes scrollable like standard
Conversion of a previously existant Form should be very simple, as well as creation of a new resizable dialog.
The Sample Applications
This is a view of the SDI application:
This is a view of the MDI application:
You may see how to do this in the next section.
Usage - Step by Step
Add the ResizableLib to your project's workspace, as explained in the relative article.
Create a standard Form view or take one you have already made which you want to be resizable.
Include 'ResizableFormView.h' in the associated header file.
Search and replace all
CFormView occurrences with
CResizableFormView in both your .cpp and .h files, just as if your dialog class was derived from
CResizableFormView instead of
CFormView. I think there's no way to let the Class Wizard do this for you. Let me know if I'm wrong, please.
Your header file should appear like this:
class CMyFormView : public CResizableFormView
OnInitialUpdate override, add an anchor for each control you want the size and/or position to be changed when the user resizes the Form.
AddAnchor(IDC_LIST1, TOP_LEFT, BOTTOM_RIGHT);
AddAnchor(IDC_GROUP1, TOP_LEFT, BOTTOM_LEFT);
You are ready to rebuild your project and you will have a resizable Form view just as you wanted.
For further details, see the next section.
This class inherits only from CResizableLayout and obviously from CFormView. It just needs basic resizing capabilities.
- These are needed to reproduce the construction scheme of a
CFormView derived class. This is the reason why replacing one class with the other will work.
- Implemented in the various base classes, see ResizableLib article.
Even this class is eventually integrated with ResizableLib. Many thanks to John Simmons for his first attempt to make resizable Form views and for pointing out the scrolling problem. To solve it I had to add more functionalities to
CResizableLayout, that could be useful for other purposes.
The CVS tree is now on Source Forge.
Always attracted by low-level programming and Assembly, he started to appreciate the joys of templates and STL while working for his Master Thesis. For seven months he was playing with airplanes and automatic control at the Unversity of Illinois at Urbana-Champaign, where he first met QNX and embedded systems.
In his job experience he learned Java to develop user interfaces and graphical editors, and re-discovered the Eclipse IDE that he had used in its early versions with the QNX SDK. He also deepened his knowledge of Linux and embedded systems, microcontrollers firmware and embedded voice recognition, while also practicing electronics design.
He graduated in Computer Engineering (Ingegneria informatica) at the University of Pisa, Italy, in December 2003. Currently working for an electronics and robotics company (www.robotechsrl.com
He lives in Pisa and in Follonica (GR), Italy.