Commit before breaking everything
[matches/honours.git] / research / transmission_spectroscopy / TOF / Win32++ / include / changes.txt
1 Version 7.3\r
2 ===========\r
3 \r
4 New Features and Enhancements\r
5 -----------------------------\r
6 * Adjusted the frame's appearance\r
7         - Updated the visual appearance of popup menus on systems using Windows Aero. On \r
8           systems with Aero, popup menus are rendered with Windows Visual Styles. Systems\r
9           without Areo continue to use the Win32++ theme for popup menus.\r
10         - Frames now honour the current window theme's menu and status fonts.\r
11         - the frame's appearence changes dynamically to reflect changes to the window theme.\r
12         - minor adjustment to the rebar theme colours for the "Modern" theme.\r
13         \r
14 * Extended CWebBrowser\r
15         The CWebBrower class has been extended to wrap the member functions of\r
16         iWebBrowser2. The Browser sample has been updated and now supports\r
17         Copy/Paste.\r
18 \r
19 * Added the following controls\r
20    - CDateTime\r
21    - CHeader\r
22    - CHotKey\r
23    - CIPAddress\r
24    - CMonthCalendar\r
25    - CTooltip\r
26    \r
27 * CString constructors now accept either ANSI or Unicode characters and converts\r
28    these to TCHAR as required.\r
29    \r
30 * Extended CDC\r
31         The CDC::DetachBitmap function has been added. This provides a convenient\r
32         way of detaching a bitmap from a memory DC created by CreateCompatibleBitmap.\r
33         The various CDC::CreateXXX functions now return void instead of a pointer\r
34         to the old GDI object.\r
35 \r
36 \r
37 Changes in detail\r
38 -----------------\r
39 - Added         CDateTime\r
40 - Added         CHeader\r
41 - Added         CHotKey\r
42 - Added         CIPAddress\r
43 - Added         CMonthCalendar\r
44 - Added         CTooltip\r
45 \r
46 - Added         wndTop                                  a special CWnd for use with SetWindowPos\r
47 - Added         wndTopMost                              a special CWnd for use with SetWindowPos\r
48 - Added         wndNoTopMost                    a special CWnd for use with SetWindowPos\r
49 - Added         wndBottom                               a special CWnd for use with SetWindowPos\r
50 \r
51 - Added     CDC::DetachBitmap\r
52 - Added         CFrame::DrawMenuItem\r
53 - Added     CFrame::DrawMenuItemBkgnd\r
54 - Added     CFrame::MeasureMenuItem\r
55 - Added         CGDIObject::DeleteObject\r
56 - Added         CString::CString(LPCSTR pszText);\r
57 - Added         CString::CString(LPCWSTR pszText);\r
58 - Added         CString::operator += (LPCSTR szText)\r
59 - Added         CString::operator += (LPCWSTR szText)\r
60 - Added     CReBar::SetToolTips\r
61 - Added         CWebBrowser::ExecWB\r
62 - Added         CWebBrowser::GetApplication\r
63 - Added         CWebBrowser::GetBusy\r
64 - Added         CWebBrowser::GetContainer\r
65 - Added         CWebBrowser::GetFullScreen\r
66 - Added         CWebBrowser::GetHeight\r
67 - Added         CWebBrowser::GetLeft\r
68 - Added         CWebBrowser::GetLocationName\r
69 - Added         CWebBrowser::GetLocationURL\r
70 - Added         CWebBrowser::GetOffline\r
71 - Added         CWebBrowser::GetProperty\r
72 - Added         CWebBrowser::GetReadyState\r
73 - Added         CWebBrowser::GetRegisterAsBrowser\r
74 - Added         CWebBrowser::GetTheaterMode\r
75 - Added         CWebBrowser::GetTop\r
76 - Added         CWebBrowser::GetTopLevelContainer\r
77 - Added         CWebBrowser::GetType\r
78 - Added         CWebBrowser::GetVisible\r
79 - Added         CWebBrowser::GetWidth\r
80 - Added         CWebBrowser::GoBack\r
81 - Added         CWebBrowser::GoForward\r
82 - Added         CWebBrowser::GoHome\r
83 - Added         CWebBrowser::GoSearch\r
84 - Added         CWebBrowser::Navigate2\r
85 - Added         CWebBrowser::PutProperty\r
86 - Added         CWebBrowser::Refresh\r
87 - Added         CWebBrowser::Refresh2\r
88 - Added         CWebBrowser::SetFullScreen\r
89 - Added         CWebBrowser::SetHeight\r
90 - Added         CWebBrowser::SetLeft\r
91 - Added         CWebBrowser::SetOffline\r
92 - Added         CWebBrowser::SetRegisterAsBrowser\r
93 - Added         CWebBrowser::SetTheaterMode\r
94 - Added         CWebBrowser::SetTop\r
95 - Added         CWebBrowser::SetVisible\r
96 - Added         CWebBrowser::SetWidth\r
97 - Added         CWebBrowser::Stop\r
98 - Modified  CComboBoxEx::GetComboBoxControl now returns CWnd*\r
99 - Modified  CComboBoxEx::GetEditCtrl            now returns CEdit*\r
100 - Modified  CDC::CreateBitmap                           now returns void\r
101 - Modified  CDC::CreateCompatibleBitmap         now returns void\r
102 - Modified  CDC::CreateDIBSection               now returns void\r
103 - Modified  CDC::CreateBitmapIndirect           now returns void\r
104 - Modified  CDC::CreateDIBitmap                 now returns void\r
105 - Modified  CDC::CreateMappedBitmap             now returns void\r
106 - Modified  CDC::CreatePatternBrush             now returns void\r
107 - Modified  CDC::CreateSolidBrush               now returns void\r
108 - Modified  CDC::CreateBrushIndirect            now returns void\r
109 - Modified  CDC::CreateHatchBrush               now returns void\r
110 - Modified  CDC::CreateDIBPatternBrush          now returns void\r
111 - Modified  CDC::CreateDIBPatternBrushPt        now returns void\r
112 - Modified  CDC::CreateFontIndirect             now returns void\r
113 - Modified  CDC::CreateFont                     now returns void\r
114 - Modified  CDC::CreatePen                      now returns void\r
115 - Modified  CDC::CreatePenIndirect              now returns void\r
116 - Modified  CDC::LoadBitmap                             now returns BOOL\r
117 - Modified  CDC::LoadImage                      now returns BOOL\r
118 - Modified  CDC::LoadOEMBitmap                  now returns BOOL\r
119 - Modified  CDocker::GetCaption             now returns CString\r
120 - Modified  CDocker::LoadRegistrySettings   now accepts CString\r
121 - Modified  CDocker::SaveRegistrySettings   now accepts CString\r
122 - Modified  CFrame::GetMRUEntry             now returns CString\r
123 - Modified  CFrame::GetRegistryKeyName      now returns CString\r
124 - Modified  CListView::GetEditCtrl              now returns CEdit*\r
125 - Modified  CListView::GetItemText          now returns CString\r
126 - Modified  CListView::GetHeader                        now returns CHeader*\r
127 - Modified  CListView::GetToolTips              now returns CToolTip*\r
128 - Modified  CListView::SetToolTips              now accepts CToolTip*\r
129 - Modified  CListView::EditLabel                        now returns CEdit*\r
130 - Modified  CRebar::GetToolTips                 now returns CToolTip*\r
131 - Modified  CStatusBar::GetPartText         now returns CString\r
132 - Modified  CToolBar::GetToolTips                       now returns CToolTip*\r
133 - Modified  CToolBar::SetToolTips               now accepts CToolTip*\r
134 - Modified  CTreeView::GetEditCtrl              now returns CEdit*\r
135 - Modified  CTreeView::GetToolTips              now returns CToolTip*\r
136 - Modified  CTreeView::SetToolTips              now accepts CToolTip*\r
137 - Modified  CWnd::SetWindowPos                          now uses CWnd* for first argument\r
138 - Removed       CString::b_str\r
139 - Removed       CString(LPCTSTR pszText);\r
140 - Removed       CString::operator += (LPCTSTR szText);\r
141 - Renamed       CFrame::DrawCheckmark to DrawMenuCheckmark\r
142 \r
143 \r
144 Incompatibilities with previous versions\r
145 ----------------------------------------\r
146 \r
147 \r
148 Version 7.2\r
149 ===========\r
150 \r
151 New Features and Enhancements\r
152 -----------------------------\r
153 * Added CString class\r
154    The CString class is intended to provide much of the same functionality\r
155    as the CString class provided with MFC/ATL.\r
156 * Added CMenu\r
157         The CMenu class is intended to provide much of the same functionality\r
158     as the CMenu class provided with MFC. The library now standardises on\r
159     using pointers to CMenu, instead of HMENU.  \r
160 * Added CFile\r
161         This class provides a convenient wrapper for functions dealing with files.\r
162 * Added Idle processing.\r
163         The Idle processing is used by the Win32++ library for some internal \r
164         processing. It is also available for use by users, and is used in much the\r
165         same way as OnIdle processing in MFC.\r
166 * Enhanced the CDC class, and added CWindowDC, CClientDC, CMemDC, CPaintDC\r
167    and CMetaFileDC. The creation of the various different types of CDCs has\r
168    been simplified, and the CDC functions now use CDC pointers instead of\r
169    HDCs. These changes improve the compatibility between Win32++ and MFC.\r
170 * Enhanced the various GDI object classes, namely CBitmap, CBrush, CFont, \r
171    CPalette, CPen and CRgn, and added CGDIObject. The library now standardises\r
172    on using pointers to theses classes instead of raw GDI handles (like HPEN).\r
173    These changes improve the compatibility between Win32++ and MFC.\r
174 \r
175 Changes in detail\r
176 -----------------\r
177 - Added CustomControl sample\r
178 - Added CMenu\r
179 - Added CString\r
180 - Added CFile\r
181 - Added CClientDC\r
182 - Added CMemDC\r
183 - Added CPaintDC\r
184 - Added CWindowDC\r
185 - Added CMetaFileDC\r
186 - Added BSTR2A\r
187 - Added BSTR2T\r
188 - Added BSTR2W\r
189 - Added FromHandle. Several global functions. They return pointers for:\r
190     - CBitmap\r
191         - CBrush\r
192         - CFont\r
193         - CPalette\r
194     - CPen\r
195     - CDC\r
196         - CMenu\r
197         - CWnd\r
198 - Added CDC::Destroy\r
199 - Added CDC::GetDCBrushColor\r
200 - Added CDC::SetDCBrushColor\r
201 - Added CDC::SelectObject    (several versions)\r
202 - Added CDC::SelectPalete\r
203 - Added CDC::SelectClipRgn\r
204 - Added CDC::SelectStockObject\r
205 - Added CDocker::GetActiveDocker\r
206 - Added CDocker::SetCaptionColors\r
207 - Added CTab::SetTabIcon\r
208 - Added CWinApp::GetAccelerators\r
209 - Added CWinApp::OnIdle\r
210 - Added CWinApp::PreTranslateMessage\r
211 - Added CWinException::GetError\r
212 - Added CWnd::ChildWindowFromPoint\r
213 - Added CWnd::WindowFromPoint\r
214 - Modified LoadString                                   now returns CString\r
215 - Modified CBrush::CreatePatternBrush   now accepts a CBitmap pointer\r
216 - Modified CDC::BitBlt                                  now accepts a CDC pointer\r
217 - Modified CDC::CreateCompatibleDC              now accepts a CDC pointer and attaches the DC\r
218 - Modified CDC::CreateDC                                now attaches the DC                                                     \r
219 - Modified CDC::CreateIC                now attaches the DC\r
220 - Modified CDC::CreateCompatibleBitmap  now accepts a CDC pointer\r
221 - Modified CDC::CreateDIBitmap                  now accepts a CDC pointer\r
222 - Modified CDC::CreateDIBSection                now accepts a CDC pointer\r
223 - Modified CDC::StretchBlt                              now accepts a CDC pointer\r
224 - Modified CDocker::IsChildOfDocker     now accepts a CWnd pointer instead of HWND\r
225 - Modified CDocker::IsRelated                   now accepts a CWnd pointer instead of HWND\r
226 - Modified CWnd::CreateEx               now accepts a CMenu pointer\r
227 - Modified CWnd::GetAncestor                    now accepts a gaFlags parameter\r
228 - Modified CWnd::GetFont                                now returns a CFont pointer\r
229 - Modified CWnd::GetMenu                now accepts a CMenu pointer\r
230 - Modified CWnd::GetNextDlgGroupItem    now accepts a CWnd pointer\r
231 - Modified CWnd::GetNextDlgTabItem      now accepts a CWnd pointer\r
232 - Modified CWnd::GetSystemMenu          now accepts a CMenu pointer\r
233 - Modified CWnd::GetUpdateRgn           now accepts a CRgn pointer\r
234 - Modified CWnd::GetWindowDC            now returns a CDC pointer\r
235 - Modified CWnd::HiliteMenuItem         now accepts a CMenu pointer\r
236 - Modified CWnd::InvalidateRgn          now accepts a CRgn pointer\r
237 - Modified CWnd::OnEraseBkgnd                   now accepts a CDC pointer\r
238 - Modified CWnd::RedrawWindow           now accepts a CRgn pointer\r
239 - Modified CWnd::ReleaseDC              now accepts a CDC pointer\r
240 - Modified CWnd::ScrollWindowEx         now accepts a CRgn pointer\r
241 - Modified CWnd::SetFont                now accepts a CFont pointer\r
242 - Modified CWnd::SetMenu                now accepts a CMenu pointer\r
243 - Modified CWnd::SetWindowRgn           now accepts a CRgn pointer\r
244 - Modified CResizer::AddChild                   now accepts a CWnd pointer\r
245 - Removed CLoadString\r
246 - Removed CDC::AttachBitmap\r
247 - Removed CDC::AttachBrush\r
248 - Removed CDC::AttachFont\r
249 - Removed CDC::AttachPalette\r
250 - Removed CDC::AttachPen\r
251 - Removed CDC::DetachBitmap\r
252 - Removed CDC::DetachBrush\r
253 - Removed CDC::DetachFont\r
254 - Removed CDC::DetachPalette\r
255 - Removed CDC::DetachPen\r
256 - Removed CTab::SetTabImage\r
257 - Removed GetWindowType for all CWnd classes\r
258 - Renamed CDocker::GetDockTopLevel to CDocker::GetTopmostDocker\r
259 - Renamed CWnd::OnPaint to CWnd::OnDraw\r
260 \r
261 - Extended the help documentation to describe the new features.\r
262 - Added an index to the help documentation.\r
263 \r
264 \r
265 Incompatibilities with previous versions\r
266 ----------------------------------------\r
267 * The Win32++ now uses Run Time Type Information (RTTI). Older Microsoft\r
268   compilers (Visual Studio 2003 and earlier) may need to enable the option to\r
269   support RTTI.\r
270 * LoadString now returns a CString.\r
271 * CWnd::OnEraseBkgnd has changed. This function now uses a CDC pointer instead\r
272    of a CDC reference. This change will need to be made for any function that\r
273    overrides OnEraseBkgnd in order for it to get called.\r
274 * CWnd::OnPaint has been removed and replaced with OnPaint.  Code that previously \r
275    overrode OnPaint will now need to override OnPaint instead. OnPaint uses a \r
276    CDC pointer, not a CDC reference.\r
277 * Changes made to the CDC class (and the addition of CClientDC, CWindowDC, CMemDC,\r
278    etc.) are rather likely to affect existing code.\r
279     - CDC functions now use a CDC pointer argument instead of a HDC.\r
280         - CWnd functions like GetDC return a pointer to a CDC instead of a HDC.\r
281         - use CClientDC for client window DCs instead of CDC MyDC = GetDC().\r
282         - use CWindowDC for window DCs instead of CDC MyDC = GetWindowDC().\r
283         - use CMemDC for memory DCs instead of CDC MyDC = CreateCompatibleDC(dc).\r
284         - use CDC::FromHandle to conveniently convert a HDC provided to us by say \r
285            CustomDraw to a CDC pointer.\r
286 \r
287         Coding example:\r
288           CClientDC dcClient(this);                     // Create a client window DC for this CWnd\r
289       CMemDC dcMem(&dcClient);                  // Create a Memory DC from the Client DC.\r
290       CMemDC.CreatePen(PS_SOLID, 1, RGB(255,0,0);\r
291           CMemDC.MoveTo(0, 0);\r
292       CMemDC.LineTo(50, 50);\r
293           dcClient.BitBlt(0, 0, cx, cy, &CMemDC, 0, 0); \r
294         \r
295 Version 7.1.3\r
296 =============\r
297 This version has some additional bug fixes:\r
298 * Fixed a thread safety issue in CWinApp::SetTLSIndex introduced in version 7.1.2.\r
299 * Added CWinApp::PreTranslateMessage to simplify overloading CWinApp::MessageLoop.\r
300 * The Explorer sample now ends without throwing an exeption on Win2000.\r
301 * CResizer now preserves the tab order in a dialog.\r
302 \r
303 Version 7.1.2\r
304 =============\r
305 This version has some additional bug fixes: \r
306 * CDC Attach and CDC(HDC hDC) now succeed when the HDC is already attached to another CDC.\r
307 * Fixed a resource leak in CTab::Paint which affected CTab, CTabbedMDI and CDockContainer\r
308 * Tabs without owner draw now display their icons.\r
309 * A CDC can now be reused after its HDC has been detached.\r
310 * CBrush::CBrush(COLORREF crColor) now works as expected.                 \r
311 * CResize now supports controls that issue WM_HSCROLL and WM_VSCROLL messages.\r
312 \r
313 Version 7.1.1\r
314 =============\r
315 Version 7.1.1 has some minor bug fixes for 7.1, namely:\r
316 * Corrected an incorrect dock size when docking a docker.\r
317 * Corrected a drawing error in the tutorials and scribble sample which occurred when \r
318   dragging the mouse over the view window with the left button down.\r
319 * Added a missing typedef for BSTR2T.\r
320 \r
321 Version 7.1\r
322 ===========\r
323 New Features and Enhancements\r
324 -----------------------------\r
325 * Added support for Task Dialogs\r
326 * Added the following set of GDI classes: CBitmap, CBrush, CFont, CPalette, \r
327    CPen and CRgn. These work in cooperation with the existing CDC class.\r
328 * Added a set of new Text conversion functions based on classes.\r
329    The complete set of functions are:\r
330         A2BSTR          ANSI  to BSTR\r
331         A2OLE           ANSI  to OLE\r
332         A2T                     ANSI  to TCHAR\r
333         A2W                     ANSI  to WCHAR\r
334         OLE2A           OLE   to ANSI\r
335         OLE2T           OLE   to TCHAR\r
336         OLE2W           OLE   to WCHAR\r
337         T2A                     TCHAR to ANSI\r
338         T2BSTR          TCHAR to BSTR\r
339         T2OLE       TCHAR to OLE\r
340         T2W                     TCHAR to Wide\r
341         W2A                     WCHAR to ANSI\r
342         W2BSTR          WCHAR to BSTR\r
343         W2OLE           WCHAR to OLE\r
344         W2T                     WCHAR to TCHAR\r
345    Refer to the help documentation for instructions on using these functions.\r
346 * Added CLoadString (and LoadString) to return a string resource. \r
347 * OnEraseBkgnd is now called automatically when a CWnd's background needs\r
348    erasing. Return TRUE to prevent default erasure.\r
349 * Scribble Tutorial now demonstrates the use of command line arguments\r
350 * Enhanced CResizer.\r
351    - The anchor points are now fixed instead of proportional\r
352    - Scrollbars are now added when required.\r
353    - Added the DialogResizing sample to demonstrate CResizer's new features.\r
354 * Create now use a CWnd pointer instead of a HWND when specifying the \r
355    parent window.\r
356 * Dialogs and Property Sheets now use a CWnd pointer instead of a HWND\r
357    when specifying the parent window.\r
358 * CTab has been enhanced. The TCS_FIXEDWIDTH and TCS_OWNERDRAWFIXED styles\r
359    are now optional.   \r
360 * Extended the CSize, CPoint and CRect classes\r
361 * Extended CMDIFrame and CMDIChild. CMDIChild::SetHandles is now used to set\r
362    the MDI child's menu and accelerator table. \r
363 * A docker can now be resized while docked using CDocker::SetDockSize.\r
364 * Extended the "Using Win32++ section of the Win32++ help documentation.\r
365 \r
366 Changes in detail\r
367 -----------------\r
368 - Added CBitmap\r
369 - Added CBrush\r
370 - Added CFont\r
371 - Added CPalette\r
372 - Added CPen\r
373 - Added CRgn\r
374 - Added CTaskDialog\r
375 - Added CLoadString \r
376 - Added LoadString                              (uses CLoadString, replaces CWnd::LoadString)\r
377 - Added tStringStream typedef   (a TCHAR stringstream)\r
378 - Added A2BSTR  \r
379 - Added A2OLE   \r
380 - Added A2T             \r
381 - Added A2W             \r
382 - Added OLE2A   \r
383 - Added OLE2T   \r
384 - Added OLE2W   \r
385 - Added T2A             \r
386 - Added T2BSTR  \r
387 - Added T2OLE   \r
388 - Added T2W             \r
389 - Added W2A             \r
390 - Added W2BSTR  \r
391 - Added W2OLE   \r
392 - Added W2T\r
393 - Added CDC::AttachPalette\r
394 - Added CDC::CreatePalette\r
395 - Added CDC::CreateHalftonePalette\r
396 - Added CDC::DetachPalette\r
397 - Added CDC::GetBitmap\r
398 - Added CDC::GetBitmapInfo\r
399 - Added CDC::GetBrusg\r
400 - Added CDC::GetBrushInfo\r
401 - Added CDC::GetFont\r
402 - Added CDC::GetFontInfo\r
403 - Added CDC::GetPen\r
404 - Added CDC::GetPenInfo\r
405 - Added CDC::ExtSelectClipRgn\r
406 - Added CDC::ExcludeClipRect\r
407 - Added CDC::GetClipBox \r
408 - Added CDC::GetClipRgn\r
409 - Added CDC::GetRgn             \r
410 - Added CDC::IntersectClipRect\r
411 - Added CDC::OffsetClipRgn\r
412 - Added CDC::PtVisible\r
413 - Added CDC::RectVisible\r
414 - Added CDC::SelectClipRgn\r
415 - Added CDialog::AttachItem\r
416 - Added CDockContainer::SetActiveContainer\r
417 - Added CDocker::Close\r
418 - Added CDocker::SetCaptionHeight\r
419 - Added CFrame::GetFrameAccel\r
420 - Added CFrame::ShowMenu\r
421 - Added CMDIChild::GetMDIFrame\r
422 - Added CMDIChild::SetHandles\r
423 - Added CMDIFrame::GetMDIClient\r
424 - Added CMDIFrame::MDICascade\r
425 - Added CMDIFrame::MDIIconArrange\r
426 - Added CMDIFrame::MDIMaximize\r
427 - Added CMDIFrame::MDINext\r
428 - Added CMDIFrame::MDIPrev\r
429 - Added CMDIFrame::MDIRestore\r
430 - Added CMDIFrame::MDITile\r
431 - Added CResizer::GetMaxRect\r
432 - Added CResizer::GetMinRect\r
433 - Added CResizer::HandleMessage\r
434 - Added CTab::GetListMenu\r
435 - Added CTab::SetFixedWidth\r
436 - Added CTab::SetOwnerDraw\r
437 - Added CTabbedMDI::GetListMenu\r
438 - Added CWinApp::SetAccelerators\r
439 - Added CWnd::BeginPaint\r
440 - Added CWnd::ClientToScreen\r
441 - Added CWnd::CheckRadioButton\r
442 - Added CWnd::DlgDirList\r
443 - Added CWnd::DlgDirListComboBox\r
444 - Added CWnd::DlgDirSelectEx\r
445 - Added CWnd::DlgDirSelectComboBoxEx\r
446 - Added CWnd::DrawAnimatedRects\r
447 - Added CWnd::DrawCaption\r
448 - Added CWnd::EndPaint\r
449 - Added CWnd::GetDesktopWindow\r
450 - Added CWnd::GetNextDlgGroupItem\r
451 - Added CWnd::GetNextDlgTabItem\r
452 - Added CWnd::GetSystemMenu\r
453 - Added CWnd::GetUpdateRect\r
454 - Added CWnd::GetUpdateRgn\r
455 - Added CWnd::HiliteMenuItem\r
456 - Added CWnd::IsDialogMessage\r
457 - Added CWnd::IsDlgButtonChecked\r
458 - Added CWnd::MapWindowPoints\r
459 - Added CWnd::OnEraseBkgnd\r
460 - Added CWnd::Print\r
461 - Added CWnd::ScreenToClient\r
462 - Added CWnd::SendNotifyMessage\r
463 - Modified CDialog                                      now takes a CWnd pointer instead of HWND\r
464 - Modified CResizer::AddChild           now takes a CWnd reference\r
465 - Modified CWnd::Create                         now takes a CWnd pointer instead of HWND\r
466 - Modified CWnd::CreateEx               now takes a CWnd pointer instead of HWND\r
467 - Moved CWnd::LoadBitmap to LoadBitmap\r
468 - Removed CDC::AttachClipRgn\r
469 - Removed CDC::DetachClipRgn\r
470 - Removed CMDIChild::SetChildMenu\r
471 - Renamed CDocker::GetDockWidth to CDocker::GetDockSize\r
472 - Renamed CDocker::SetDockWidth to CDocker::SetDockSize\r
473 - Renamed CDC::AttachClipRegion to CDC::AttachClipRgn\r
474 - Renamed CDC::DetachClipRegion to CDC::DetachClipRgn\r
475 - Replaced CharToWide  with A2W\r
476 - Replaced CharToTChar with A2T\r
477 - Replaced TCharToChar with T2A\r
478 - Replaced TCharToWide with T2W\r
479 - Replaced WideToChar  with W2A\r
480 - Replaced WideToTChar with W2T\r
481 - Replaced CWnd::LoadString with CLoadString (and ::LoadString)\r
482 - Added several functions to CPoint\r
483 - Added several functions to CSize\r
484 - Added many functions to CRect \r
485   \r
486 The problem with the previous the text functions\r
487 ------------------------------------------------\r
488 While the previous text conversion functions generally worked well, there were\r
489 ambiguities about usage, and corner cases where they produced undesirable \r
490 results. For example:\r
491 // Problem 1\r
492 // This worked well\r
493    ExampleFunction(CharToTChar(pAnsi1));\r
494 \r
495 // But this failed to produce expected results\r
496    ExampleFunction(CharToTChar(pAnsi1), CharToTChar(pAnsi2));\r
497 \r
498 Problem 2\r
499 // This worked as expected\r
500    LPCTSTR pStr = CharToTChar(pAnsi1);\r
501 \r
502 // But this fails to work as expected\r
503    LPCTSTR pStr1 = CharToTChar(pAnsi1);\r
504    LPCTSTR pStr2 = CharToTChar(pAnsi2);\r
505 \r
506 The new text conversion functions (classes) resolve problem 1 and render all of\r
507 problem 2's usage invalid (making usage less ambiguous).   \r
508 \r
509 Refer to the "Text Conversions" topic in the "Using Win32++" section of the \r
510 help documentation that ships with Win32++ for information on how to use the\r
511 new functions. \r
512 \r
513 Incompatibilities with previous versions\r
514 ----------------------------------------\r
515 * The old text conversion functions have been replaced with a set of new functions\r
516    which look and behave more like the functions used in MFC, ATL and WTL.\r
517 * Windows, dialogs and property sheets now use a CWnd pointer instead of a HWND\r
518    to specify the parent window.\r
519 * CTab defaults to not using the CS_FIXEDWIDTH and TCS_OWNERDRAWFIXED styles. \r
520    The SetFixedWidth and SetOwnerDraw functions can be used to change these\r
521    styles.\r
522 * Users of Borland's C++ compiler version 5.5 will need to install the \r
523    compiler's service pack 2 for stringsteam support.\r
524 * MDI Children use SetHandles instead of SetChildMenu to set the menu. SetHandles\r
525    also sets the MDI child's accelerator table (if any).\r
526 * LoadString now returns a tString instead of a LPCTSTR.   \r
527 \r
528 Version 7.0.2\r
529 =============\r
530 * Fix for a memory leak in CDC\r
531 * Fix for accelerators in WinCE\r
532 * Fix for menu check marks when themes are disabled\r
533 * Fix for OnMessageReflect in dialogs\r
534 \r
535 Version 7.0.1\r
536 =============\r
537 * Supports the latest version of MinGW compiler\r
538 * DialogProc now returns INT_PTR instead of BOOL\r
539 * Fixed several x64 warnings\r
540 * Fixed DragAcceptFiles error when WIN32_LEAN_AND_MEAN is defined\r
541 * Added OnPaint to CDialog and CPropertyPage\r
542 * Minor update to the documentation\r
543 * Added targetver.h to samples\r
544 * Supports VS2010's resource editor\r
545 \r
546 Incompatibilities with previous versions\r
547 ----------------------------------------\r
548 DialogProc now returns INT_PTR instead of BOOL. This change will be required\r
549 in user code as well.\r
550 \r
551 \r
552 Version 7.0\r
553 ===========\r
554 \r
555 New Features and Enhancements\r
556 -----------------------------\r
557 * The following function now return CWnd* instead of HWND:\r
558    GetActiveWindow, GetAncestor, GetCapture, GetFocus, GetDlgItem, GetWindow,\r
559    GetLastAtivePopup, GetParent, GetTopWindow, SetActiveWindow, SetCapture, \r
560    SetFocus, and SetParent.  This helps the framework to be more object\r
561    orientated, by allowing the programmer to work more directly with CWnds.\r
562    It also reduces the need to convert between CWnds and HWNDs in user code.\r
563    If a CWnd object for the HWND doesn't already exist, Win32++ creates a \r
564    temporary CWnd. The pointers returned by these functions should not be\r
565    stored and used later, as they might not be valid then.\r
566 * Added CThread class to simplify the task of using threads and creating\r
567    windows in different threads. CThread can be used for both worker threads\r
568    and GUI threads. Refer to the Thread and DirectX samples for examples of \r
569    how to use CThread to create windows in a different thread. The DirectX\r
570    sample also uses a customized message loop for the thread.   \r
571 * Added the following control wrappers: CAnimation, CComboBox, CComboBoxEx,\r
572    CProgressBar, CScrollBar, CSlider, and CSpinButton.\r
573 * Renamed CToolbar to CToolBar, CStatusbar to CStatusBar, CRebar to CReBar\r
574    and CMenubar to CMenuBar. This matches the MFC names, and is also more \r
575    consistent with Win32++'s naming conventions.   \r
576 * Added support for re-sizable dialogs. The CResizer class has been added\r
577    to dialog.h to facilitate dialog resizing. Refer to the forms sample for\r
578    an example of how to put CResizer to use.\r
579 * Added IPv6 support to CSocket. The network samples have been updated to\r
580    take advantage of IPv6 support. IP version 6 is supported on Vista \r
581    operating systems and newer.\r
582 * Added Shared_Ptr class. Note that a "shared_ptr" will be available for the\r
583    updated C++ standard. It is already available with some modern compilers,\r
584    and also for users of the Boost library. The "Shared_Ptr" class is intended\r
585    as an alternative for those users who would like to use a "shared_ptr", but\r
586    don't have access to one yet. Unlike auto-ptr's, shared_ptr's can be used\r
587    to safely store pointers in vectors and other STL containers.\r
588 * Extended the CToolbar class.\r
589 * Added the GDIPlus sample to demonstrate how to use the GDIPlus library \r
590    provided with modern Windows operating systems (XP and above).\r
591 * Win32++ can now be run from inside a DLL. The "DLL" sample demonstrates how to\r
592    put a Win32++ dialog in a dll, and run it from a test program.  \r
593 * Dialogs and Property Sheets now use DWLP_MSGRESULT to automatically handle the \r
594    value returned by notifications in their message handling. This allows a \r
595    dialog's controls to use custom draw.\r
596 * Improved the appearance of frames without themes. The frame sample demonstrates\r
597    how override CMainFrame::OnCreate to customize the frame's appearance.\r
598 * Asserts are used more liberally to test for programming errors. Any message\r
599    sent to a non-existent window, for example, will now assert. More asserts \r
600    are intended to help users write code that is more robust. Note that asserts\r
601    are only evaluated in Debug mode, and have no effect in Release mode.\r
602 * Exceptions are thrown less often. They are now thrown to indicate a critical\r
603    problem, outside the programmer's control. Throwing fewer exceptions results \r
604    in slightly smaller executables, and gives users more flexibility and \r
605    control over their own exception methodology. They are thrown when:\r
606    - a window creation fails.\r
607    - a critical dll cannot be loaded.\r
608    - a window message cannot be routed to a CWnd object.\r
609    - an attempt to read from or write to the registry fails unexpectedly.\r
610 * Vectors are now used as a replacement for all dynamically allocated arrays, \r
611    ensuring the arrays are automatically deleted when they go out of scope.\r
612    Creating an array with "new" runs the risk of causing a memory leak,\r
613    particularly when an exception is thrown. Using a vector to create the\r
614    array guarantees that it will be deleted properly under all circumstances.\r
615 * The OnPaint function now uses a CDC reference as its argument instead of a \r
616    HDC. This simplifies the task of using a CDC when overriding OnPaint.\r
617 * Extended the help documentation.   \r
618 \r
619 Changes in detail\r
620 -----------------\r
621 Added CAnimation\r
622 Added CComboBox  \r
623 Added CComboBoxEx\r
624 Added CProgressBar \r
625 Added CResizer \r
626 Added CScrollBar \r
627 Added CSlider \r
628 Added CSpinButton\r
629 Added Shared_Ptr\r
630 Added CThread \r
631 Updated CSocket to support IPv6\r
632 Added CMDIChild::MDIActivate\r
633 Added CMDIChild::MDIDestroy\r
634 Added CMDIChild::MDIMaximize\r
635 Added CMDIChild::Restore\r
636 Added CPropertySheet::SetIcon\r
637 Added CPropertyPage::SetWizardButtons\r
638 Added CPropertyPage::QuerySiblings\r
639 Added CRebar::SizeToRect\r
640 Added CSocket::IsIPV6Supported\r
641 Added CSocket::FreeAddrInfo\r
642 Added CSocket::GetAddrInfo\r
643 Added CSocket::GetLastError\r
644 Added CTabbedMDI::SetActiveMDITab\r
645 Added CToolBar::AddButtons\r
646 Added CToolBar::AddString\r
647 Added CToolBar::AutoSize\r
648 Added CToolBar::CheckButton \r
649 Added CToolBar::DeleteButton   \r
650 Added CToolBar::GetButton\r
651 Added CToolBar::GetButtonSize\r
652 Added CToolBar::GetButtonText\r
653 Added CToolBar::GetDisabledImageList\r
654 Added CToolBar::GetHotItem\r
655 Added CToolBar::GetImageList\r
656 Added CToolBar::GetPadding\r
657 Added CToolBar::GetRect\r
658 Added CToolBar::GetRows\r
659 Added CToolBar::GetTextRows\r
660 Added CToolBar::GetToolTips\r
661 Added CToolBar::HideButton\r
662 Added CToolBar::Indeterminate\r
663 Added CToolBar::InsertButton\r
664 Added CToolBar::IsButtonHidden\r
665 Added CToolBar::IsButtonHighlighted\r
666 Added CToolBar::IsButtonIndeterminate\r
667 Added CToolBar::IsButtonPressed\r
668 Added CToolBar::MapAccelerator\r
669 Added CToolBar::MarkButton\r
670 Added CToolBar::MoveButton\r
671 Added CToolBar::PressButton\r
672 Added CToolBar::SaveRestore\r
673 Added CToolBar::SetDisabledImageList\r
674 Added CToolBar::SetDrawTextFlags\r
675 Added CToolBar::SetExtendedStyle\r
676 Added CToolBar::SetHotImageList\r
677 Added CToolBar::SetHotItem\r
678 Added CToolBar::SetImageList\r
679 Added CToolBar::SetIndent\r
680 Added CToolBar::SetMaxTextRows\r
681 Added CToolBar::SetPadding\r
682 Added CToolBar::SetToolTips\r
683 Added CWinException::what\r
684 Added CWnd::DragAcceptFiles\r
685 Added CWnd::GetActiveWindow\r
686 Added CWnd::GetCapture\r
687 Added CWnd::GetFocus\r
688 Added CWnd::GetFont\r
689 Added CWnd::GetIcon\r
690 Added CWnd::GetLastActivePopup\r
691 Added CWnd::GetTopWindow\r
692 Added CWnd::GetWindowTextLength\r
693 Added CWnd::OpenIcon\r
694 Added CWnd::SetFont\r
695 Added CWnd::SetIcon\r
696 Added CWnd::SetWindowTheme\r
697 Added CWnd::ShowOwnedPopups\r
698 Added CWnd::ShowWindowAsync\r
699 Added CWnd::WindowFromDC\r
700 Added ::IsAeroThemed\r
701 Modified CPropertyPage::Apply                   now returns int\r
702 Modified CPropertyPage::OnKillActive    now returns BOOL\r
703 Modified CPropertyPage::OnOK                    now returns int\r
704 Modified CPropertyPage::OnSetActive             now returns int\r
705 Modified CPropertyPage::OnWizardBack    now returns int\r
706 Modified CPropertyPage::OnFinish                now returns BOOL\r
707 Modified CPropertyPage::OnWizardBack    now returns int\r
708 Modified CPropertyPage::OnWizardFinish  now returns BOOL\r
709 Modified CPropertyPage::OnWizardNext    now returns int\r
710 Modified CSocket::Bind                  now uses TCHAR instead of char\r
711 Modified CSocket::Connect               now uses TCHAR instead of char\r
712 Modified CSocket::Receive               now uses TCHAR instead of char\r
713 Modified CSocket::ReceiveFrom           now uses TCHAR instead of char\r
714 Modified CSocket::Send                  now uses TCHAR instead of char\r
715 Modified CSocket::SentTo                now uses TCHAR instead of char\r
716 Modified CWinException::what            now outputs text to debugger\r
717 Modified CWnd::OnPaint              now takes a CDC& argument instead of HDC\r
718 Renamed CMenubar to CMenuBar\r
719 Renamed CRebar to CReBar\r
720 Renamed CStatusbar to CStatusBar\r
721 Renamed CToolbar to CToolBar\r
722 Renamed RebarTheme to ReBarTheme\r
723 Renamed ToolbarTheme to ToolBarTheme\r
724 Renamed CToolBar::AddToolbarButton to CToolBar::AddButton\r
725 Moved CWnd::CharToTChar to ::CharToTChar\r
726 Moved CWnd::CharToWide  to ::CharToWide\r
727 Moved CWnd::TCharToChar to ::TCharToChar\r
728 Moved CWnd::TCharToWide to ::TCharToWide\r
729 Moved CWnd::WideToChar  to ::WideToChar\r
730 Moved CWnd::WideToTChar to ::WideToTChar\r
731 Removed CWinException::MessageBox\r
732 Removed CPropertySheet::QuerySiblings\r
733 \r
734 Added DS_NO_CLOSE style to suppress the closing of docked dockers\r
735 Added DS_FIXED_RESIZE style to perform a fixed (not proportional) resize\r
736                        on dock children\r
737 Added WM_PAINT handler to CDialog::DialogProcDefault\r
738 Added WM_PAINT handler to CPropertyPage::DialogProcDefault\r
739 \r
740 Added GDIPlus sample\r
741 Updated Network samples\r
742 Updated FormDemo sample\r
743 \r
744 Incompatibilities with previous versions\r
745 ----------------------------------------\r
746 * The OnPaint function definition has changed to:\r
747     virtual void OnPaint(CDC& dc); \r
748   The older OnPaint function will be ignored.   \r
749 * The stricter testing with asserts might reveal previously hidden errors in \r
750    user's code.\r
751 * Some CSocket functions take TCHAR as an argument instead of char.\r
752 * CFrame::LoadRegistrySettings, CFrame::LoadRegistryMRUSettings and \r
753    CFrame::SaveRegistrySettings return BOOL.\r
754 * CPropertySheet.m_PSH is now private. Use SetIcon to set the icon.\r
755 * CPropertyPage change the return types of several functions.\r
756 * Replace all instances of "Menubar" with "MenuBar"\r
757 * Replace all instances of "Rebar" with "ReBar"\r
758 * Replace all instances of "Statusbar" with "StatusBar"\r
759 * Replace all instances of "Toolbar" with "ToolBar"\r
760 * The following functions now return a CWnd pointer instead of a HWND:\r
761    GetActiveWindow, GetAncestor, GetCapture, GetFocus, GetDlgItem, GetWindow,\r
762    GetLastAtivePopup, GetParent, GetTopWindow, SetActiveWindow, SetCapture, \r
763    SetFocus, and SetParent.\r
764    \r
765 \r
766 Version 6.9\r
767 ===========\r
768 \r
769 New Features and Enhancements\r
770 -----------------------------\r
771 * Added a WebBrowser class called CWebBrowser.  This class provides a web \r
772    browser in a window. This class can be used as a view window anywhere \r
773    view windows are used, such as in frames, dockers, MDI Children, \r
774    Tabbed MDIs etc.  It has no dependence on ATL, greatly simplifying the \r
775    approach to adding a browser window to any application.  It can be compiled\r
776    by any of the supported compilers including Dev-C++, MinGW and the Borland \r
777    compilers as well as the compilers from Microsoft.  \r
778 * Added an ActiveX host class called CAXWindow.\r
779 * The CTab, CMDITab, CDocker and CDockContainer classes are now flicker free,\r
780    providing a more professional look during resizing and docker moving.\r
781 * Improved the dock targeting and dock hinting.   \r
782 * Introduced a new set of text conversion functions to convert between Ansi, \r
783    Unicode and Wide characters.\r
784 * CWnd objects can now report their type with GetWindowType.\r
785 * Modified the Browser sample to use the new CWebBrowser class. It also \r
786    demonstrates how to use an event sink to get notification of browser events.\r
787 * Added a Tray sample which demonstrates how to create an application \r
788    which can be minimised to the system tray, and restored.\r
789 * The visual editor that ships with VS2008 and VS2010 can now be used to\r
790    modify the resource files (Resource.rc and resource.h) without mangling them.   \r
791 \r
792 Changes in detail\r
793 -----------------\r
794 Added CAXWindow\r
795 Added CWebBrowser\r
796 Added CWnd::CharToWide\r
797 Added CWnd::WideToChar\r
798 Added CWnd::TCharToWide\r
799 Added CWnd::WideToTChar\r
800 Added CWnd::CharToTChar\r
801 Added CWnd::TCharToChar\r
802 Added CWnd::GetClassName\r
803 Added CWnd::GetDlgItemText\r
804 Added CWnd::GetWindowText\r
805 Added CWnd::GetWindowType\r
806 Added CWnd::KillTimer\r
807 Added CWnd::SetTimer\r
808 Added GetSizeofMenuItemInfo\r
809 Removed CharToTString\r
810 Removed TCharToString\r
811 Removed TCharToWide\r
812 Removed CWnd::GetWindowString\r
813 Removed CWnd::GetClassString\r
814 Removed CWnd::GetDlgItemString\r
815 Removed CWnd::IsContainer\r
816 Removed CWnd::IsDocker\r
817 Removed CWnd::IsFrame\r
818 Removed CWnd::IsMenubar\r
819 Removed CWnd::IsMDIChild\r
820 Removed CWnd::IsMDIFrame\r
821 Removed CWnd::IsRebar\r
822 Removed CWnd::IsStatusbar\r
823 Removed CWnd::IsTab\r
824 Removed CWnd::IsTabbedMDI\r
825 Removed CWnd::IsToolbar\r
826 Renamed CContainer to CDockContainer\r
827 \r
828 Modified Browser Sample\r
829 Added MDIFrameSplitter demo\r
830 Added Tray demo\r
831 \r
832 \r
833 Incompatibilities with previous versions\r
834 ----------------------------------------\r
835 * CContainer has been renamed to CDockContainer\r
836 * The global string functions CharToTString, TCharToString and TCharToWide have\r
837    been replaced with CWnd::CharToWide, CWnd::WideToChar, CWnd::TCharToWide,\r
838    CWnd::WideToTChar, CWnd::CharToTChar and CWnd::TCharToChar.\r
839 \r
840 \r
841 Version 6.8\r
842 ===========\r
843 \r
844 New Features\r
845 ------------\r
846 * Support has been added for the Windows Ribbon Framework available on \r
847    Windows 7 operating systems. The RibbonFrame and RibbonSimple samples \r
848    demonstrates how to implement the ribbon. RibbonFrame reverts back to \r
849    using the traditional Toolbar and Menubar if the operating system doesn't\r
850    support the ribbon framework.\r
851    \r
852 * Helper classes have been added for the standard controls, namely the Button,\r
853    Edit, Listbox, and Static controls.\r
854    \r
855 * Dockers can now be hidden and unhidden. Refer to the Splitter sample for a\r
856    demonstration of this feature.\r
857    \r
858 * Modal dialogs now support pretranslated messages.          \r
859 \r
860 \r
861 Changes\r
862 -------\r
863 Added CButton class\r
864 Added CEdit class\r
865 Added CListBox class\r
866 Added CRibbon class\r
867 Added CRibbonFrame class\r
868 Added CStatic class\r
869 Removed CSplitter class\r
870 \r
871 Added CDocker::Dock\r
872 Added CDocker::DockInContainer\r
873 Added CDocker::Hide\r
874 Added CDocker::Undock\r
875 Added CDocker::UndockContainer\r
876 Added CFrame::GetRebarTheme\r
877 Added CFrame::GetToolbarTheme\r
878 Added CFrame::GetMRUEntries\r
879 Renamed ThemeMenu to MenuTheme\r
880 Renamed ThemeRebar to RebarTheme\r
881 Renamed ThemeToolbar to ToolbarTheme\r
882 Renamed CFrame::GetThemeMenu to CFrame::GetMenuTheme\r
883 \r
884 Added UWM_GETMENUTHEME     message\r
885 Added UWM_GETREBARTHEME    message \r
886 Added UWM_GETTOOLBARTHEME  message\r
887 \r
888 Added RibbonFrame sample\r
889 Added RibbonSimple sample\r
890 \r
891 Added 'Compile VS2005 Express'  tool\r
892 Added 'Compile VS2008 Express'  tool\r
893 Added 'Compile VS2010 Express'  tool\r
894 \r
895 Added PreTranslate Message support for modal dialogs\r
896 \r
897 Bug Fixes\r
898 ---------\r
899 - Fixed TCharToString\r
900 - Dockers can now be used as the view for CMDIChild\r
901 \r
902 Version 6.7\r
903 ===========\r
904 Bug fixes:\r
905 - Fixed dialog destruction              \r
906 - Fixed thread safety when creating multi-threaded windows simultaneously\r
907 - Fixed TintBitmap for 16 bit colours\r
908 - The close button on docked dockers now works.\r
909 - Fixed PreTranslateMessage \r
910 \r
911 Changes\r
912 -------\r
913 * The directory layout of Win32++ has changed. It now contains the following\r
914   folders:\r
915    help             The help for Win32++\r
916    include          The Win32++ library for typical use\r
917    lib              The static library files when they are build\r
918    Library Projects The project files used to build the static library\r
919    new projects     A set of projects to be used in your new projects \r
920    src              The Win32++ library for building the static library\r
921    tests            A directory which contains the output of some tools\r
922    tools            A set of useful batch files for Win32++ \r
923 \r
924 * The Win32++ include directory is specified within the project rather than\r
925    hard coded into the source files. To specify a different location for the\r
926    Win32++ files in a project, specify the "Additional Include Directories" for\r
927    both "C/C++" and "Resources". \r
928 \r
929 * The projects now provide the option of compiling with a static library or\r
930    directly from the file in Win32++\include. To build the static libraries,\r
931    see below. \r
932    \r
933 * A set of projects have been supplied to build the Win32++ into a static \r
934    library. These projects are contained within the Win32++\Library Projects \r
935    folder. The lib file created is placed within the lib directory.\r
936 \r
937 * The projects are now configured to take advantage of precompiled headers.\r
938    \r
939 * A set of tools is now provided in the tools folder. They include a set of \r
940    batch files for compiling the examples and batch files to "clean" them.\r
941      \r
942 * The CDC class has been extended. Several functions have been added, and\r
943   CDC::GetDC has been renamed to CDC::GetHDC.\r
944              \r
945 * Support has been added for Right to Left languages which include Hebrew and \r
946    Arabic. The CFrame and CDocker classes now honour the WS_EX_LAYOUTRTL \r
947    extended style used by these languages. To take advantage of this feature,\r
948    use PreCreate to set this extended when using CFrame, CMDIFrame, CTab, \r
949    CTabbedMDI, and CDocker.\r
950    \r
951 * OnInitialUpdate is now called after Attach or AttachDlgItem.\r
952 \r
953 * IsChild now takes a HWND argument.\r
954  \r
955 * Win32++ is now available as a single download, rather than a collection of\r
956    files.\r
957 \r
958 * Each program example now has a Readme.txt file which describes what it does,\r
959    and the features it demonstrates.   \r
960 \r
961 \r
962 Version 6.6\r
963 ===========\r
964 Changes\r
965 -------\r
966 * The number of arguments have changed for WndProc and WndProcDefault.\r
967   - The HWND parameter has been dropped in both of these functions. It's\r
968     presence was redundant and possibly confusing. Users will need to modify\r
969     their WndProc and WndProc functions accordingly. If needed, the m_hWnd \r
970     member variable can be used in place of hwnd within the WndProc function.\r
971 * The number of arguments have changed for DialogProc and DialogProcDefault.\r
972   - The HWND parameter has been dropped in both of these functions. It's\r
973     presence was redundant and possibly confusing. Users will need to modify\r
974     their WndProc and WndProc functions accordingly. If needed, the m_hWnd \r
975     member variable can be used in place of hwnd in the WndProc function.  \r
976 * Enhancements to docking, containers and tabs.\r
977   - By default the dockers are immediately resized while the splitter bar is \r
978      being dragged. To defer resizing until the splitter bar is released, use\r
979      SetDragAutoResize(FALSE).\r
980   - The close and list buttons now indicate when they are hot and pressed.\r
981   - Added SetTabText, SetTabImage and SwapTabs to the CTab class.\r
982   - Minor improvements to the painting of tabs, containers and dockers.\r
983 * Enhancements to GDI graphics support.\r
984   - The CDC class has been extended. It now includes wrapper functions for \r
985      the Device Context related functions.\r
986   - Added the CBitmapInfoPtr class. This simplifies the use of the BITMAPINFO\r
987      structure in functions like GetDIBits and SetDIBits.\r
988   - Added GrayScaleBitmap function to gdi.h. It converts a colored bitmap to\r
989      to gray-scale.     \r
990 * Automated menu updating.\r
991   - When a menu is about to be displayed, OnUpdateMenu is called to provide\r
992      an opportunity to modify the check state of the menu items.\r
993 * Enhancements to frames\r
994   - The style of the rebarband is now specified in AddToolbarBand. This \r
995      facilities saving and restoring toolbar settings from the registry (as \r
996      demonstrated in the Themes example.)  \r
997   - The Frame's ShowToolbar and ShowStatusbar states are now saved in the\r
998      registry.\r
999 * Modification to CRect class\r
1000   - The various function now use references instead of naked pointers.    \r
1001 * Updated the Themes example.\r
1002   - Added check boxes for the various rebar theme option\r
1003   - Added Hide/Show option for the additional toolbars\r
1004   - Save/Load the theme options in the registry\r
1005   - Save/Load the rebar band positions and styles in the registry\r
1006 * Replaced the Form example with the DocViewForm example.\r
1007   - This example now demonstrates a form using a Doc/View architecture, much\r
1008      like the traditional Doc/View of MFC. \r
1009   - Added OnUpdateMenu handling. \r
1010 * Updated the FastGDI example.\r
1011   - Added gray-scale transformation\r
1012   - Added file save.\r
1013   - Added Scroll bars.\r
1014 * Updated the picture example.\r
1015   - Added Scroll bars.  \r
1016 * Updated the DockContainer and DockTabbedMDI examples    \r
1017   - These examples now demonstrate how to theme a container's toolbar.   \r
1018    \r
1019       \r
1020 Incompatibilities with previous versions\r
1021 ----------------------------------------\r
1022 - WndProc now takes 3 arguments, not 4:\r
1023    WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam);\r
1024 - WndProcDefault now takes 3 arguments, not 4:\r
1025    WndProcDefault(UINT uMsg, WPARAM wParam, LPARAM lParam);\r
1026 - DialogProc now takes 3 arguements, not 4:\r
1027    DialogProc(UINT uMsg, WPARAM wParam, LPARAM lParam);\r
1028 - DialogProcDefault now takes 3 arguements, not 4:\r
1029    DialogProcDefault(UINT uMsg, WPARAM wParam, LPARAM lParam);\r
1030 - CFrame::AddToolbarBand now requires three arguements\r
1031 - The various CRect functions use references to RECT rather than pointers\r
1032 - CWnd::IsVisable has been renamed to CWnd::IsWindowVisible\r
1033 - CWnd::IsEnabled has been renamed to CWnd::IsWindowEnabled\r
1034 \r
1035 Version 6.5\r
1036 ===========\r
1037 Major Changes\r
1038 -------------\r
1039 * Added StaticLibrary example\r
1040    This example has the code to build Win32++ into a a static library, and also\r
1041    demonstrates the use of Precompiled Headers. More experienced users might\r
1042    prefer this approach as it provides for much faster compile times.\r
1043 * Added CTab class. \r
1044    This class is used by CContainer and CTabbedMDI, and can also be used as a\r
1045    view window.\r
1046 * Added TabDemo example.\r
1047    Refer to the TabDemo example for a demonstration of how CTab class is\r
1048    used as a view window in a frame. TabDialogDemo also uses CTab. \r
1049 * Added CTabbedMDI class.\r
1050    A TabbedMDI can be used as a view window for a Frame or a Dockable. As the \r
1051    name suggests, it provides tabs for a MDI window. \r
1052 * Added TabbedMDI example within docking.\r
1053    Refer to the docking TabbedMDI example for a demonstration of how CTabbedMDI\r
1054    class is used.   \r
1055 * Enhancements to docking.\r
1056    - Dockers can now be docked into, and undocked from all other dockers, \r
1057      including those that are undocked. \r
1058    - Containers can also be docked into and undocked all from containers,\r
1059       including those that are undocked.\r
1060    - Containers can display their tabs at the top or bottom of the window.\r
1061    - Containers can also display a tab list button.\r
1062    - Docker and container objects are destroyed when their window is closed.\r
1063    - CContainer::SetupToolbar can be used to specify the toolbar's resource IDs.\r
1064    - Dockers and containers can save their layout in and load their layout from\r
1065       the registry.     \r
1066 * Improvements to toolbars\r
1067    - Resource IDs should be specified in SetupToolbar, rather than CMainFrame's\r
1068       constructor.\r
1069    - Other configurations for the toolbar such as disabled buttons and alternate\r
1070       bitmaps should be specified in SetupToolbar, rather than in OnCreate.\r
1071    - Configuration of additional toolbars if any should also be done in\r
1072       SetupToolbar.  Refer to the Themes example for a demonstration of this.\r
1073    - CToolbar now holds the vector of Resource IDs, which can be retrieved\r
1074       with the GetToolbarData function. There is no need to specify a vector\r
1075       when adding additional toolbars.\r
1076    - There is now no need to specify the number of toolbar buttons in the\r
1077       AddBitmap, ReplaceBitmap, SetBitmap and SetImages functions.\r
1078    - The AddToolbarButton can now add a toolbar button which is initially\r
1079       disabled.\r
1080    - There is no need to call SetButtons when adding additional toolbars.\r
1081    - Tooltips for all toolbars in the rebar are now displayed.      \r
1082 * MIN and MAX macros have been defined and can be used in place of min and max.\r
1083    This avoids incompatibilities between the way different compliers support\r
1084    these macros. It also avoids clashes between the macro definitions of \r
1085    min and max, and the STL definitions of min and max.\r
1086    \r
1087 All Changes\r
1088 -----------\r
1089 Added CTab class\r
1090 Added CTabbedMDI class\r
1091 Added TabDemo example\r
1092 Added Docking TabbedMDI example\r
1093 Added CFrame::SetupToolbar\r
1094 Added CFrame::m_bUseToolbar\r
1095 Added CContainer::SetupToolbar\r
1096 Added CDocker::GetDockTopLevel\r
1097 Added CDocker::GetContainer\r
1098 Added CDocker::GetTabbedMDI\r
1099 Added CDocker::IsRelated\r
1100 Added CDocker::LoadRegistrySettings\r
1101 Added CDocker::NewDockerFromID\r
1102 Added CDocker::SaveRegistrySettings\r
1103 Added CToolbar::GetToolbarData\r
1104 Added CWnd::GetClassString\r
1105 Added CWnd::IsFrame\r
1106 Added CWnd::IsMenubar\r
1107 Added CWnd::IsRebar\r
1108 Added CWnd::IsTabbedMDI\r
1109 Added CWnd::IsToolbar\r
1110 Changed CFrame::SetToolbarImages\r
1111 Changed CToolbar::SetImages\r
1112 Changed CToolbar::SetBitmap\r
1113 Changed CToolbar::AddBitmap\r
1114 Changed CToolbar::ReplaceBitmap\r
1115 Renamed CDockable to CDocker\r
1116 Renamed CDocker::CheckDockables       to CDocker::VerifyDockers\r
1117 Renamed CFrame::OnFrameDrawItem       to CFrame::OnDrawItem\r
1118 Renamed CFrame::OnFrameExitMenuLoop   to CFrame::OnExitMenuLoop\r
1119 Renamed CFrame::OnFrameInitMenuPopup  to CFrame::OnInitMenuPopup\r
1120 Renamed CFrame::OnFrameMeasureItem    to CFrame::OnMeasureItem\r
1121 Renamed CFrame::OnFrameClose          to CFrame::OnClose\r
1122 Renamed CFrame::OnFrameNotify         to CFrame::OnNotify\r
1123 Renamed CFrame::OnFrameSetFocus       to CFrame::OnSetFocus\r
1124 Renamed CFrame::OnFrameSysColorChange to CFrame::OnSysColorChange\r
1125 Renamed CFrame::OnFrameTimer          to CFrame::OnTimer\r
1126 Removed OnFrameCommand\r
1127 \r
1128 Incompatiblities with previous versions\r
1129 ---------------------------------------\r
1130 - Many of the functions associated with adding toolbars to frames have changed.\r
1131   CFrame::SetupToolbar should be overridden to perform toolbar configuration.\r
1132   Refer to the Themes example for a demonstration of how to add multiple toolbars\r
1133   to a frame.\r
1134 - The renaming of the CFrame::OnXXXX may affect overloading. Calling the base\r
1135   function may now be required particularly for CFrame::OnNotify.\r
1136 - The OnCommand handlers for OnViewStatusbar and OnViewToolbar have been removed\r
1137   from CFrame, and should be added to CMainFrame::OnCommand if required.\r
1138 - CDocker has been renamed to CDocker\r
1139 - dockable.h has been renamed to docking.h      \r
1140    \r
1141 Version 6.4.1\r
1142 =============\r
1143 This release has the following bug fixes:\r
1144 - Assertions in CContainer reported by VS2005(express) and VS2008(express)\r
1145 - Definition of OPENFILENAME_SIZE_VERSION_400 added for VS6 \r
1146 \r
1147 Version 6.4\r
1148 ===========\r
1149 \r
1150 Major Changes\r
1151 ------------\r
1152 * Docking:\r
1153   - Added tabbed docking container with optional toolbar\r
1154   - Added close button to the caption of docked windows\r
1155   - Added 'outer' docking  ie. docking at the side of the frame rather \r
1156       than inside another Docker.\r
1157   - Added a second docking example demonstrating containers\r
1158   - Added save/restore dock layout to docking examples\r
1159   - Added Close All Dockables and Default Dock Layout to docking examples\r
1160   - Added Win98 and WinME support for docking. \r
1161 * Added Region support to CDC class.\r
1162 * Notepad example enhancements:\r
1163   - Now capable of handling Unicode text\r
1164 * Themes example now demonstrates a ComboBoxEx control in its toolbar  \r
1165  \r
1166 \r
1167 Fixes\r
1168 -----\r
1169 Various fixes to docking, including:\r
1170  - Fixed Z order of undocked windows\r
1171  - Fixed focus for child windows\r
1172  - Improved undocking\r
1173  - Reduced flicker\r
1174  - Better sizing of docked windows\r
1175  \r
1176 Incompatibilities with previous versions\r
1177 ----------------------------------------\r
1178 * CWnd::m_hWndParent has been removed. Use GetParent() in its place.\r
1179 * Some functions have been added to CWnd which have the same name as their \r
1180    Win32 counterparts. Prefix functions with the global scope specifier '::' \r
1181    to use the original Win32 API function instead of the Win32++ version.\r
1182 * CSplitter has been superseded by CDocker. Use a CDocker with the\r
1183    DS_NO_UNDOCK and DS_NO_CAPTION styles to duplicate the behaviour of \r
1184    CSplitter. CSplitter will be retained for backwards compatibility, as\r
1185    well as for those who require its 'immediate' mode.\r
1186    \r
1187 More About Docking Containers\r
1188 -----------------------------\r
1189 A container can be used is a view window for a frame, MDI child, dockable etc.\r
1190 It has a tab control, and is capable of containing and displaying other\r
1191 containers. Each container will in turn have a view window of its own. The view \r
1192 for each container as well as it's toolbar (if any) is displayed in the tab's \r
1193 page. When used as the view window of a dockable, the container also permits\r
1194  docking and undocking of it's containers.  \r
1195 \r
1196 In Summary:\r
1197 * Any CWnd object inherited from CContainer is capable of containing other CWnd\r
1198    objects inherrited from CContainer. There is no theoretical limit as to the\r
1199    number of containers that can be contained.\r
1200 * A child container (a container contained within another) can not in turn\r
1201    contain other containers.   \r
1202 * Containers have a View window, just like Frames, MDI children and dockables.\r
1203 * Containers can set an icon and text for the tab, as well as text for the \r
1204    docking caption.\r
1205 * Containers can optionally include a toolbar.\r
1206 * When a container contains other containers, each container's view is displayed\r
1207    in a separate tab.\r
1208 * When a container is the view  window for a dockable, any container children\r
1209    can be individually undocked from their parent container.\r
1210 * When used a the view for a docker, a container with child containers can be\r
1211    undocked as a group.\r
1212 * An undocked container group (container with children) can be docked as a\r
1213    group inside another docked container. \r
1214 \r
1215 \r
1216 Version 6.3\r
1217 ===========\r
1218 \r
1219 Major Changes\r
1220 -------------\r
1221 * Added support for docking. See below for more information on Docking  \r
1222    - Note: CDocker is now recommended over CSplitter for splitter apps.     \r
1223 * Added the Fast GDI demo. This demonstrates the use of the TintBitmap function.\r
1224 * MDI child windows now require a view window. The use of a view window is \r
1225    now the same for Frames, MDI children, and dockables. The MDI demo example\r
1226    has been extended to include ListView and TreeView views.\r
1227 * Added message translation. This allows modeless dialogs and propertysheets\r
1228     to process the tab (and other) keys.\r
1229 * Added a CWnd::Destroy function. This returns a CWnd back to its default\r
1230     state ready to be reused.\r
1231 * SetView can now be used to change the frame's view from one CWnd to \r
1232     another.\r
1233 * The Frame now stores which child window had focus before it is de-activated,\r
1234     and returns focus to this child when the frame application is reactivated.    \r
1235     \r
1236     \r
1237 Fixes\r
1238 -----    \r
1239 * CFrame now supports Extra Large fonts in the menu and status bar. Also, font\r
1240     size can be changed while the application is running.\r
1241 * 16Bit colours (and grey-scale) are now rendered properly\r
1242 * Tabbing now works for modeless dialogs and property sheets\r
1243    (uses PreTranslateMessage).            \r
1244 \r
1245 \r
1246 Incompatibilities with previous versions\r
1247 ----------------------------------------\r
1248 * MDI Child windows now require a view. Refer to the MDI Demo example for an\r
1249    example of how to add views to a MDI child.\r
1250 * Some functions have been added to CWnd which have the same name as their \r
1251    Win32 counterparts. Prefix functions with the global scope specifier '::' \r
1252    to use the original Win32 API function instead of the Win32++ version.\r
1253 \r
1254 \r
1255 More About Docking\r
1256 ------------------\r
1257 * Any CWnd object inherited from CDocker is capable of docking other CWnd\r
1258     objects inherrited from CDocker.\r
1259 * Dockables can be docked in any of the 4 sides. Any number of windows can be \r
1260    docked on a side.\r
1261 * A dockable could be docked inside another dockable which in turn is docked\r
1262    inside another. There is no theoretical limit as to depth of dockables \r
1263    within dockables.\r
1264 * Dockables have a View window, just like the Frame, and MDI children.\r
1265 * Dockables are separated by a movable splitter bar.\r
1266 * Dockables use a modern style of dock targeting and dock hinting (the same\r
1267     as Visual Studio 2005 and 2008).\r
1268 * Dockables can have styles including:\r
1269   - DS_NOTDOCKED                           \r
1270   - DS_DOCKED_LEFT         \r
1271   - DS_DOCKED_RIGHT   \r
1272   - DS_DOCKED_TOP                  \r
1273   - DS_DOCKED_BOTTOM  \r
1274   - DS_NODOCKCHILD_LEFT         \r
1275   - DS_NODOCKCHILD_RIGHT                \r
1276   - DS_NODOCKCHILD_TOP   \r
1277   - DS_NODOCKCHILD_BOTTOM               \r
1278   - DS_NO_RESIZE                                 \r
1279   - DS_NO_CAPTION                \r
1280   - DS_NO_UNDOCK\r
1281 * CDocker is now the recommended alternative to CSplitter (being much simpler\r
1282     to implement - see the example below). The DS_NO_CAPTION and DS_NO_UNDOCK\r
1283     styles should be specified if docking and undocking are not required.\r
1284 \r
1285 Example of how to dock 8 dockables inside a dockable view:\r
1286 ----------------------------------------------------------\r
1287 void CMainFrame::OnInitialUpdate()\r
1288 {\r
1289     // CTextDockable in inherited from CDocker\r
1290         CDocker* pDockLeft   = m_DockView.AddDockedChild(new CTextDockable, DS_DOCKED_LEFT, 100);\r
1291         CDocker* pDockRight  = m_DockView.AddDockedChild(new CTextDockable, DS_DOCKED_RIGHT, 100);\r
1292         CDocker* pDockTop    = m_DockView.AddDockedChild(new CTextDockable, DS_DOCKED_TOP, 100);\r
1293         CDocker* pDockBottom = m_DockView.AddDockedChild(new CTextDockable, DS_DOCKED_BOTTOM, 100);\r
1294 \r
1295         // Dock 4 dockables inside other dockables\r
1296     pDockLeft->AddDockedChild(new CTextDockable, DS_DOCKED_BOTTOM, 100);\r
1297         pDockRight->AddDockedChild(new CTextDockable, DS_DOCKED_BOTTOM, 100);\r
1298         pDockTop->AddDockedChild(new CTextDockable, DS_DOCKED_RIGHT, 100);\r
1299         pDockBottom->AddDockedChild(new CTextDockable, DS_DOCKED_RIGHT, 100);\r
1300 }                          \r
1301 \r
1302 (Refer to the Docking example for an example of to use CDocker.)    \r
1303 \r
1304 \r
1305 Version 6.2\r
1306 ===========\r
1307 \r
1308 Changes\r
1309 -------\r
1310 * The default colour scheme has been changed from blue to grey. \r
1311   The blue, olive and silver colour schemes continue to be used on Windows XP\r
1312   with themes enabled. \r
1313 \r
1314 New Features\r
1315 ------------\r
1316 * Frame applications now store the window size and position in the registry.\r
1317 To enable this, set the m_KeyName member variable in CMainFrame's constructor.\r
1318 This member variable can be used to reflect the company name and application\r
1319 name, for example:\r
1320   m_KeyName = _T("SomeCompany\\SomeApp");\r
1321   \r
1322 * Frame applications now provide a Most Recently Used (MRU) list. This list is \r
1323 stored in the registry.\r
1324 \r
1325 * Extended CWnd\r
1326 CWnd now includes functions which wrap many of the Windows API functions that \r
1327 affect to windows. \r
1328 \r
1329 \r
1330 Version 6.1\r
1331 ===========\r
1332 \r
1333 New Features\r
1334 ------------\r
1335 * All Win32++ code has been moved to header files.\r
1336 This simplifies the use of Win32++. To add Win32++ to a project, simply \r
1337 include the appropriate Win32++ header files in your code. There is no longer\r
1338 any need to add the Win32++ files to the project, although doing so may\r
1339 still prove useful under some circumstances. Depending on the compiler/IDE\r
1340 used, adding the Win32++ header files to the project may add the various \r
1341 Win32++ classes to the class view.\r
1342  \r
1343 * Added CListView class.\r
1344 This class encapsulates the various messages and macros used by the Win32/64 \r
1345 API to manage the List-View common control. You can inherit from this class\r
1346 when creating your own List-View control in a window, or attaching a \r
1347 List-View control from a dialog.\r
1348 \r
1349 * Added CTreeView class.\r
1350 This class encapsulates the various messages and macros used by the Win32/64 \r
1351 API to manage the Tree-View common control. You can inherit from this class\r
1352 when creating your own Tree-View control in a window, or attaching a \r
1353 Tree-View control from a dialog.\r
1354 \r
1355 * Added CPoint CRect and CSize classes\r
1356 The CPoint, CRect and CSize classes can be used anywhere a POINT, RECT\r
1357 or CSize struct can be used respectively. In addition:\r
1358 - The constructors ensure that members are set to reasonable values.\r
1359   They also allow a default value to be set when the class is used as a \r
1360   function argument.\r
1361 - The classes have additional member functions, including operator==\r
1362   and operator!= .   \r
1363 - These classes makes porting code from MFC or WTL a little easier.\r
1364 \r
1365 * Extended the CRebar, CToolbar and CStatusbar classes.\r
1366 \r
1367 \r
1368 Version 6.0.2\r
1369 =============\r
1370 \r
1371 New Features\r
1372 ------------\r
1373 * Added support for x64 applications.\r
1374 \r
1375 Win32++ can now be used to build 64 bit applications. The manifest file has \r
1376 been modified to support both 32bit and 64bit applications. The new manifest\r
1377 should be used for any 64 bit applications that use common controls.\r
1378 \r
1379 Users are encouraged to use the modern Win64 API functions like:\r
1380 GetWindowLongPtr, SetWindowLongPtr, GetClassLongPtr and SetClassLongPtr.\r
1381 Win32++ will convert these back to their Win32 API counterparts if required.\r
1382 \r
1383 \r
1384 Version 6.0.1\r
1385 =============\r
1386 Added    CFrame::SetMenuIcons\r
1387 Added    CFrame::SetToolbarImages\r
1388 Removed  CToolbar::SetToolbarImageList\r
1389 Added    CToolbar::SetBitmap\r
1390 Moved    CreateDisabledImageList to CFrame::CreateDisabledImageList\r
1391 Modified CFrame::AddMenuIcons\r
1392 \r
1393 New Features:\r
1394 ------------\r
1395 * 32 bit bitmaps are now supported for toolbars (requires XP or Vista)\r
1396 * SetMenuIcons and AddMenuIcons now also accept a bitmap for disabled icons\r
1397    in addition to the bitmap for normal icons.\r
1398 \r
1399 \r
1400 Version 6.0\r
1401 ===========\r
1402 \r
1403 New Features\r
1404 ------------\r
1405 * Win32++ now also directly supports the Windows CE operating systems. \r
1406    Windows CE is the operating system used on such things as Pocket PCs, \r
1407    embedded systems and SmartPhones. The Win32++ examples for Windows CE\r
1408    include the project files for eMbedded Visual C++ 4.0, and Visual \r
1409    Studio 2005.\r
1410    \r
1411 * Added Networking support. Win32++ now includes a CSocket class which\r
1412    encapsulates much of the Winsock API. This class is capable of monitoring\r
1413    network events, such as connection requests from clients, and notification\r
1414    that the socket has data ready to be received. Command line and dialog\r
1415    examples are provide to demonstrate how the class can be used to create\r
1416    TCP/IP (and UDP/IP) servers and clients.\r
1417   \r
1418 * Added a CDC class. This class simplifies the drawing to device contexts. \r
1419    This class can be used anywhere we would normally use a handle to a \r
1420    device context (HDC). Its features include:\r
1421    - Automates the selection of GDI objects into the device context.\r
1422    - Automates the destruction of GDI objects.\r
1423    - Automates the deletion or release of the device contexts.\r
1424    \r
1425 * PreRegisterClass can now be used to set the WNDCLASS parameters before the\r
1426    window class is registered. This provides a convenient way to set a window's \r
1427    background brush or cursor.\r
1428    \r
1429 * Improvements to tracing. It now uses OutputDebugString to send the trace\r
1430    output the debug/output pane of the various IDE's. This is now also \r
1431    compatible with debuggers, should you choose to use them. Previously the \r
1432    tracing created a separate window to display text.\r
1433 \r
1434 * Added an immediate mode to CSplitter. There is now the choice of resizing\r
1435    the panes while the splitter bar is being dragged, or defer the resizing\r
1436    until the splitter bar drag is complete (as before). CSplitter's \r
1437    constructor now requires no arguments, making the class simpler to use.\r
1438    \r
1439 * Automatically detects the XP theme used (Default, Silver or Olive), and\r
1440    adjusts the theme colors accordingly.\r
1441    \r
1442 * Added project files for Borland's Turbo C++ 2006. This is a free compiler\r
1443    available from Borland. It can be downloaded here: \r
1444    http://www.codegear.com/downloads/free/turbo\r
1445 \r
1446 * Enhanced the tutorial. It now also demonstrates file operations and printing.\r
1447 \r
1448   \r
1449 Version 5.6\r
1450 ===========\r
1451 * Property Sheets are now supported. The files PropertySheet.cpp and \r
1452    PropertySheet.h have been added to Win32++. These files define\r
1453    the CPropertySheet and CPropertyPage classes. The Property sheet generic \r
1454    demonstrates the following:\r
1455   - Modal property sheets.\r
1456   - Modeless property sheets.\r
1457   - Wizards.    \r
1458 \r
1459 \r
1460 Version 5.5\r
1461 ===========\r
1462 * Added Menubar theme support\r
1463   - Gradient background for hot buttons (any two colors)\r
1464   - Gradient background for pressed buttons (any two colors)\r
1465   - Gradient Sidebar for menu items based on pressed button colors.\r
1466   - A border color for Menubar buttons and selected menu items\r
1467 \r
1468 \r
1469 Version 5.4\r
1470 ===========\r
1471 * Added Rebar themes, including:\r
1472   - Gradient background for the rebar control (any two colors)\r
1473   - Gradient background for the rebar bands (any two colors)\r
1474   - The Menubar can be locked in place.\r
1475   - The bands can be kept left.\r
1476   - Short bands\r
1477   - Bands can have rounded borders\r
1478   - Bands with rounded borders can have a flat style\r
1479 * Added Toolbar themes, including:\r
1480   - Gradient background for hot buttons (any two colors)\r
1481   - Gradient background for pressed buttons (any two colors)\r
1482   - Colored outline for hot and pressed buttons (any color)\r
1483 * Built in support for multiple toolbars (in rebars) with AddToolbarBand\r
1484 * Added Forms example\r
1485 * Added Themes example\r
1486 \r
1487 \r
1488 Version 5.3\r
1489 ===========\r
1490 * Owner drawn drop down menu items with icons.  CMenubar::SetIcons is\r
1491    used to determine which menu items display an icon. By default, the\r
1492    framework uses the toolbar's bitmap and resource IDs for displaying \r
1493    icons. Override CFrame::SetButtons to change this behavior.\r
1494 * Automatic subclassing for windows using Windows API defined window classes.\r
1495    Now when a window is based on predefined window classes, like the \r
1496    common controls (e.g. list-view, tree-view, richedit), the window is\r
1497    automatically subclassed. There is now no need to call the subclass\r
1498    function in user code.   \r
1499 \r
1500 \r
1501 Version 5.2\r
1502 ===========\r
1503 * Added a separate HINSTANCE for resources. This provides for multilingual\r
1504    support, when resources are loaded via a DLL.\r
1505 * Added the Internet Browser example. It demonstrates how to host an ActiveX\r
1506    control in a Win32++ window. It requires ATL.\r
1507 * Added the Performance example. This program now also conducts a simple \r
1508    performance test to measure the efficiency of the message handling. \r
1509 \r
1510    \r
1511 Version 5.1\r
1512 ===========\r
1513 * Existing windows can be subclassed and converted to CWnd objects using Attach\r
1514 * Dialog items can be sublcassed and converted to CWnd objects, using \r
1515    AttachDlgItem.\r
1516 * Improvements to CToolbar. The toolbar uses image lists which support using \r
1517   separate bitmaps for normal, hot and disabled buttons. Text can be added\r
1518   to toolbar buttons, and the style can be set.\r
1519 * Improvements to CStatusbar.  \r
1520 * Notifications from common controls are reflected back to the CWnd object that\r
1521   generated them. \r
1522 * Messages from old style common controls are reflected back to the CWnd object\r
1523   that generated them.\r
1524   \r
1525 \r
1526 Version 5.0\r
1527 ===========\r
1528 * Added rebars to the frame window\r
1529 * Added a menubar to the frame window\r
1530 * Added MDI frame support\r
1531 * Added splitter window support\r
1532 \r
1533 \r
1534 Version 4\r
1535 =========\r
1536 * Changed the method of associating the Window's handle (HWND) and \r
1537    the CWnd pointer.  Previously SetWindowLong was used to store the \r
1538    CWin pointer in the windows data area. Now std::map is used to \r
1539    associate a CWnd pointer with the HWND (i.e. the window's handle).   \r
1540 * Added the lpParam parameter to both versions of the CWnd::CreateEx\r
1541    function.  Users are now free to use lpParam for their own \r
1542    purposes. This parameter defaults to NULL for backwards \r
1543    compatibility.\r
1544         \r
1545 \r
1546 Version 3\r
1547 =========\r
1548 * Added Tracing. To use tracing, ensure that you are in Debug mode, \r
1549    i.e. the variable _DEBUG is defined, and use the TRACE("xxxxx")\r
1550    function to send trace messages.  The first TRACE(...) creates \r
1551    the Trace output window.   \r
1552 * Enhanced the error reporting in the event of an exception. The \r
1553    GetLastError information is now decoded and displayed if it \r
1554    provides any additional information.\r
1555 * Added support for multi-threaded applications.    \r
1556     \r
1557 \r
1558 Version 2\r
1559 =========\r
1560 * The code is now Unicode compliant.\r
1561 * Added CWinApp class to start Win32++.\r
1562 * Added CDialog class to support modal and modeless dialogs as well\r
1563    as indirect dialogs (dialogs created from a dialog template in\r
1564    memory).\r
1565 * Added the Create function to simplify window creation.\r
1566     \r
1567 \r
1568 Version 1.0\r
1569 ===========\r
1570 Initial Release

UCC git Repository :: git.ucc.asn.au