Pretty WinApi Class

Introduction
When I developed Guitoolkit, lots of people wrote me asking for a new version of the library not WTL/MFC dependant. In the beginning I thought the idea was preposterous but after writing some lines i found it interesting and, as you can see, I don't know when I wrote those loads of code. This library is not an alternative to MFC/MTL, etc,etc (thinking it that way would be absurd). It is simply a curiosity that may help you get to understand wrappers. I tried to make the code simple enough so anyone can understand it, nevertheless it doesn't guarantee it is well written. As always, it can be a terrible or good programming example.
What I expect from you
First of all i want to thank you for taking your time checking the code or playing a bit with the examples but if you are interested in the project you can send me new classes or corrections of the code. This time the entire code is my responsability except one array control class published in codeproject, this one eventually gives me the oportunity to reply some messages.

Overview
To develop it i did not use the formal architecture, just needed to think about a base scheme and create classes around from there. As you can see when checking the code i have a big MFC dependence, that is why some classes have similar names and i designed a similar scheme, at least in the appearance, based on macros.
CWin is the fundamental library class, its function is to surround the Windows API base and the WndProc function, CWin inherits the CMsg message structure as well (see the file CMacrodefine.h) it simply contains one NewMsgProc virtual fuction that is replaced later by the macros that invoke message processing functions.
The library is logically arranged by a group of base classes that surround the Windows fundamental controls and other extension of advanced components under the name of swcext. Unfortunately i can't make a detailed description, so i'm presenting a quick reference of the fundamental files:
CApp.h: Class application wrapper, its function is to start the code execution.
CCommonCtrl.h: Common Windows controls wrapper and toolbox and status bar decorations.
CDialogControl.h: Common dialog box wrapper and base dialog box class.
CFrame.h: Wrapper of the base frame for the management of SDI and MDI windows, Docking Bar and the hook menu class.
CGdi.h: GDI functions wrapper and window decoration classes.
CMenuSpawn.h: Wrapper of the menu extension with icon support and a modern look.

Library Features
Modern look the Visual Studio 2005 style.
The decorated menu is included in the fundamental class that administrates MDI and SDI.
All common controls are subclased to allow easy message manipulation.
LINK_Control function that allows easy message manipulation, text box message manipulation, etc.
It doesn't require aditional DLL's.
Small executable files.
Docking bars included in the main frame.
Deattachable docking tabs.
MDI tabs.
The tabs can be moved and docked in other window.
Advanced extensions like Comboboxext, Outlook bar, Splitter, List header subclass, Toolbutton extension, Worktab, Visual Studio Toolbox class.
Easy migration of GuiToolkit classes.
Similar MFC coding style (it is not a comparation).
Toolbar and Menus with true color support.
Toolbars Combobox buttons.
It is free, use it as you please, I only would like you to give me some credit in your developments, as you can see it is a job that consumed a lot of my time and it is not easy to make something from zero.
Ideas are welcome.
What it does not include.
I tried to eliminate all the resources liberation and memory bugs but, nevertheless, as all software comes equiped with its own bugs, please let me know them. List of some components i hope i'll have available in the next version:
It does not include a string management class like CString, please suggest one or develop your own.
It does not work under Windows 98, it looks like the hook and a retrocall problem cause a Windows freeze. I'm not dedicating time to a dead OS.
There is no documentation. I hope I'll write some articles about the library but I'm sure it is possible that you prefer me to invest that time developing code or additional components.
There is no support, I'm sorry.
The autohidden classes of the docking windows are already designed and included but are not developed.
The windows don't have memory (persistent), nevertheless the base code is already developed and needs to be finished.
Simple horizontal and vertical docking in (Left,Right and Bottom), why not Top? good question.
In release mode compile only in level Minimize Size (/01)
|