
Introduction
This class adds a simple tab control in a WTL based MDI application. It is partly based on the freeware MFC version from Dundas Software available at
Usage
First include the header file and create a CMDITabImpl member in the main frame class.
#include "atlmditab.h"
...
class CMainFrame : public ....
{
CMDITabImpl<CMainFrame> m_TabbedMDI;
Then attach to the control in main frame's OnCreate(..) function
LRESULT OnCreate(UINT , WPARAM ,
LPARAM , BOOL& )
{
....
CreateMDIClient();
m_CmdBar.SetMDIClient(m_hWndMDIClient);
m_TabbedMDI.Attach(this);
...
}
Then you must add an UpdateLayout() function in main frame to place the tab control correctly. If anybody finds a solution for WTL that won't require this extra code, please let me know.
void UpdateLayout(BOOL bResizeBars = TRUE)
{
RECT rect;
GetClientRect(&rect);
// position bars and offset their dimensions
UpdateBarsPosition(rect, bResizeBars);
m_TabbedMDI.UpdateTabLayout(m_hWndClient, rect);
}
Limitations
This class is written for learning WTL, so there are surely lots of bugs in the implementation. And some features are not implemented yet, like icon support and context menu. I will work on them later when I get more time. Cheers.