Windows Template Library - WTL Version 7.0          (build 2088) 03/29/02

Copyright (C) 1997-2002 Microsoft Corporation
All rights reserved.
 
This file is a part of Windows Template Library. The code and information is
provided "as-is" without warranty of any kind, either expressed or implied.

 

 

Welcome to the Windows Template Library, version 7.0. This document contains the following topics:

 

  1. Introduction
  2. Features And Installation
  3. Packing List
  4. Class Overview
  5. ATL/WTL AppWizard
  6. Changes Between WTL 3.1 And 7.0
  7. Changes Between WTL 3.0 And 3.1

 

 

1. Introduction

 

Windows Template Library, or WTL, is a set of classes that extend ATL to support more complex user interfaces for either applications or various UI components, while maintaining the big advantage of ATL - small and fast code. WTL classes were designed to be the best and the easiest way to implement rich Win32 based UI for ATL based applications, servers, components, and controls.

 

WTL provides support for implementing various user interface elements, from frame and popup windows, to MDI, standard and common controls, common dialogs, property sheets and pages, GDI objects, UI updating, scrollable windows, splitter windows, command bars, etc. The WTL classes are mostly templated and use minimal instance data and inline functions. They were not designed as a framework, so they do not impose a particular application model, and can accommodate any. The classes do not use hooks or thread local storage, so they have no restrictions that those techniques impose. They also have no inter-dependencies and can be freely mixed with straight SDK code. In summary, WTL delivers very small and efficient code, very close in size and speed to SDK programs, while presenting a more logical, object oriented model to a programmer.

 

 

2. Features And Installation

 

This is the third public release of WTL, after WTL 3.0 and 3.1. It brings full support for the new Common Controls and themes in Windows XP, and well as support for Visual Studio .NET and ATL 7.0. It also provides fixes and enhancements to the previously available classes that implement command bars, scrollable windows, splitter windows, printing, bitmap buttons, etc. The classes can be used with either VC++ 6.0 and ATL 3.0 or VC++ .NET and ATL 7.0, and App Wizards for both environments are included.

 

The WTL classes are provided in header files located in the include directory. The only header files that must be included is atlapp.h, while others can be used when needed. The name of the file doesn't mean that you have to create an application, just that atlapp.h contains base definitions required for WTL projects.

 

To install WTL, just copy the whole directory structure, or unpack the archive file, to the location of your choice. Please be sure to add the WTL\include directory to the list of include directories in VC++, so that the compiler can find them when you include them in your projects..

 

Setup programs for both App Wizards are provided in their directories. After executing the setup scripts, App Wizards will appear in the list of App Wizards when you select File.New.Project in VC++ IDE.

 

To manually install AppWizard for VC++ 6.0, just copy the file AppWiz60\AtlApp60.awx to the custom app wizard directory in the VC++ installation, %VC6DIR%\Common\MSDev98\Template, where %VC6DIR% is the directory where VC++ 6.0 is installed.

 

To manually install App Wizard for VC++ 7.0, copy all WTLApp70.* files from AppWiz70\Files to VC++ .NET projects directory, %VC7DIR%\Vc7\vcprojects, where %VC7DIR% is the directory where VC++ .NET is installed. After that,  open WTLApp70.vsz and modify the like that contains ABSOLUTE_PATH to contain %WTLDIR%\AppWiz70\Files, where %WTLDIR% is the directory where WTL files are.

 

 

3. Packing List

 

File Name: Description:

readme.htm this file
 
include\
    atlapp.h message loop, interfaces, general app stuff
    atlcrack.h message cracker macros
    atlctrls.h standard and common control classes
    atlctrlw.h command bar class
    atlctrlx.h bitmap button, check list view, and other controls
    atlddx.h data exchange for dialogs and windows
    atldlgs.h common dialog classes, property sheet and page classes
    atlframe.h frame window classes, MDI, update UI classes
    atlgdi.h DC classes, GDI object classes
    atlmisc.h WTL ports of CPoint, CRect, CSize, CString, etc.
    atlprint.h printing and print preview
    atlres.h standard resource IDs
    atlscrl.h scrollable windows
    atlsplit.h splitter windows
    atltheme.h Windows XP theme classes
    atluser.h menu class
 
samples\
    Alpha\... Windows XP 32-bit (alpha) toolbar images
    BmpView\... bitmap file view sample
    MTPad\... multithreaded notepad sample
    MDIDocVw\... WTL version of the MDI sample
    GuidGen\... WTL version of the GuidGen sample
 
appwiz60\
    setup.js AppWizard setup program
    atlapp60.awx WTL AppWizard for VC++ 6.0
 
appwiz70\
    setup.js AppWizard setup program
    Files\... WTL AppWizard for VC++ 7.0 files

 

 

4. Class Overview

 

usage:        mi base    -    a base class (multiple inheritance)
  client    -    wrapper class for a handle
  as-is    -    to be used directly
  impl    -    implements a window (has WindowProc) or other support
  helper    -    a helper class
  base    -    implementation base class

 

class name: usage: description:

app/module support
CAppModule   app support, CComModule derived
CServerAppModule   module for COM servers
CMessageLoop as-is message loop
CMessageFilter mi base message filter interface
CIdleHandler mi base idle time handler interface

frame windows
CFrameWindowImplBase<> base  
CFrameWindowImpl<> impl frame window support
COwnerDraw<> impl mi base owner-draw msg map and handlers
CDialogResize<> impl mi base support for resizing dialogs

MDI windows
CMDIWindow client MDI methods
CMDIFrameWindowImpl<> impl MDI frame window
CMDIChildWindowImpl<> impl MDI child window

update UI
CUpdateUIBase base  
CUpdateUI<> mi base class  provides support for UI update

standard controls
CStatic client static ctrl
CButton client button ctrl
CListBox client list box ctrl
CComboBox client combo box ctrl
CEdit client edit ctrl
CEditCommands mi standard edit command support
CScrollBar client scroll bar ctrl

common controls
CImageList client/impl image list
CListViewCtrl client list view ctrl
CTreeViewCtrl client tree view ctrl
CTreeItem helper  
CTreeViewCtrlEx client uses CTreeItem
CHeaderCtrl client header bar ctrl
CToolBarCtrl client toolbar ctrl
CStatusBarCtrl client status bar ctrl
CTabCtrl client tab ctrl
CToolTipCtrl client tool tip ctrl
CToolInfo helper  
CTrackBarCtrl client trackbar ctrl
CUpDownCtrl client up-down ctrl
CProgressBarCtrl client progress bar ctrl
CHotKeyCtrl client hot key ctrl
CAnimateCtrl client animation ctrl
CRichEditCtrl client rich edit ctrl
CRichEditCommands mi std rich edit commands support
CDragListBox client drag list box
CDragListNotifyImpl<> impl mi class support for notifications
CReBarCtrl client rebar ctrl
CComboBoxEx client extended combo box
CDateTimePickerCtrl client date-time ctrl
CFlatScrollBarImpl mi impl flat scroll bars support
CFlatScrollBar as-is flat scroll bars support
CIPAddressCtrl client IP address ctrl
CMonthCalendarCtrl client month calendar ctrl
CCustomDraw<> impl mi class custom draw handling support

property sheet & page
CPropertySheetWindow client  
CPropertySheetImpl<> impl property sheet
CPropertySheet as-is  
CPropertyPageWindow client  
CPropertyPageImpl<> impl property page
CPropertyPage as-is  
CAxPropertyPageImpl<> impl property page with ActiveX
CAxPropertyPage as-is  

common dialogs
CFileDialogImpl<> impl GetOpenFileName/GetSaveFileName
CFileDialog as-is    
CFolderDialogImpl impl directory picker
CFolderDialog as-is  
CFontDialogImpl<> impl ChooseFont common dialog
CFontDialog as-is  
CRichEditFontDialogImpl<> impl ChooseFont for rich edit
CRichEditFontDialog as-is  
CColorDialogImpl<> impl ChooseColor common dialog
CColorDialog as-is  
CPrintDialogImpl<> impl PrintDlg common dialog
CPrintDialog as-is  
CPrintDialogExImpl impl new Win2000 print dialog
CPrintDialogEx as-is  
CPageSetupDialogImpl<> impl PageSetupDlg common dialog
CPageSetupDialog as-is  
CFindReplaceDialogImpl<> impl FindText/ReplaceText
CFindReplaceDialog as-is  

USER support
CMenu client menu support

GDI support
CDC client DC support
CPaintDC client for handling WM_PAINT
CClientDC client for GetDC
CWindowDC client for GetWindowDC
CPen client GDI pen object
CBrush client GDI brush object
CFont client GDI font object
CBitmap client GDI bitmap object
CPalette client GDI palette object
CRgn client GDI rgn object

enhanced controls
CCommandBarCtrlImpl impl command bar
CCommandBarCtrl as-is  
CBitmapButtonImpl impl bitmap button
CBitmapButton as-is  
CCheckListViewCtrlImpl impl check list box
CCheckListViewCtrl as-is  
CHyperLinkImpl impl hyper link control
CHyperLink as-is  
CWaitCursor as-is wait cursor
CMultiPaneStatusBarCtrlImpl impl status bar with multiple panes
CMultiPaneStatusBarCtrl as-is  
CPaneContainerImpl<> impl pane window container
CPaneContainer as-is  

additional UI components
CScrollImpl impl scrolling support
CScrollWindowImpl impl scrollable window
CMapScrollImpl impl scrolling support with map modes
CMapScrollWindowImpl impl scrollable window with map modes
CSplitterImpl impl splitter support
CSplitterWindowImpl impl splitter window
CSplitterWindow as-is  

theming support
CTheme client Windows XP theme
CThemeImpl<> impl theming support for a window

printing support
CPrinterInfo<> as-is print info support
CPrinter client printer handle wrapper
CDevMode client DEVMODE wrapper
CPrinterDC client printing DC support
CPrintJobInfo client print job info
CPrintJob client print job support
CPrintPreview mi print preview support
CPrintPreviewWindow as-is print preview window

miscellaneous
CSize as-is WTL port of MFC's CSize
CPoint as-is WTL port of MFC's CPoint
CRect as-is WTL port of MFC's CRect
CString as-is WTL port of MFC's CString
CWinDataExchange mi data exchange for controls
CRecentDocumentList mi or as-is support for MRU list

 

 

5. ATL/WTL AppWizard

 

ATL/WTL AppWizard generates starting code for a WTL app. It has options to create code for different app types and features.

 

You can choose the following options:

 

There are 2 versions of the App Wizard provided with WTL - one for VC++ 6.0, and the other for VC++ .NET (7.0). They can be used only in corresponding versions of the VC++ IDE.

 

 

6. Changes Between WTL 3.1 And 7.0

 

New classes and features:

Support for new Common Controls v6 messages

Support for Visual Studio .NET and ATL 7.0

WTLApp70 - new App Wizard for Visual Studio .NET

CThemeImpl - implements support for Windows XP themes

CMDICommandBarCtrl - implements Command Bar for MDI applications

 

Fixes and enhancements:

Command Bar:

 

CFrameWindowImpl:

 

Update UI:

 

CString:

 

CDC:

 

CListViewCtrl:

 

CRichEditCtrl:

 

CHyperLink:

 

CColorDialog:

 

atlcrack.h:

 

atlapp.h:

 

atlctrls.h:

 

CRecentDocumentList:

 

CSplitterWindow:

 

Printing:

 

Misc:

 

App Wizard:

 

Samples:

 

 

7. Changes Between WTL 3.0 And 3.1

 

New classes:

CPaneContainer - implements a window that provides a title bar and a close button (like Explorer)

CDialogResize - an MI class that allows resizing of dialogs (or any windows with child windows/controls)

CAxPropertyPageImpl - implements a property page that can host ActiveX controls

 

Fixes and enhancements:

CServerAppModule now clears m_hEventShutdown to avoid calling CloseHandle twice

 

CString:

 

CEdit and CRichEditCtrl: SetSelAll and SetSelNone had reversed implementation

 

atlres.h: Changed IDs so that they are compatible with MFC's afxres.h

 

Command Bar:

 

CBitmapButton:

 

CDC:

 

CMenu:

 

GDI and USER classes should destroy the GDI/USER objects in Attach if GDI/USER resource is managed

 

CFrameWindowImpl:

 

CRecentDocumentList:

 

Update UI:

 

CSplitterWindow:

 

atlcrack.h: Added handlers for following new messages:
    WM_APPCOMMAND
    WM_NCXBUTTONDOWN
    WM_NCXBUTTONUP
    WM_NCXBUTTONDBLCLK
    WM_XBUTTONDOWN
    WM_XBUTTONUP
    WM_XBUTTONDBLCLK

 

Win64:

 

Misc:

 

App Wizard:

 

- end of readme.htm -