Changes Between V0.1.1 and V0.1.0 New and improved: Full compatibility with VS2017 and VS2019 Full C++ Standards compliance and support for compiling with /permissive- flag Full support for strict const-qualification conformance (/Zc:strictStrings) New classes: CRegProperty and CRegPropertyImpl<> for properties stored in registry New class: CSimpleFileDialog - fixed common dialog that does not use OFN_ENABLEHOOK Added support for MFC Dynamic Dialog Layout resource format App Wizard: Added support for VS2017 and VS2019 Removed options for manifest (always there) and Unicode (always on) Added option for WinXP support Added support for _NO_AUTOMATIC_NAMESPACE Fixes and enhancements: General: Added AtlGetStringPtr() function - get a pointer to read-only resource string Changed CMessageLoop::IsIdleMessage() to be virtual, so it can be overridden in a derived class Added DECLARE_FRAME_WND_CLASS2(), DECLARE_FRAME_WND_CLASS_EX2(), and DECLARE_FRAME_WND_SUPERCLASS2() for templated classes, and used DECLARE_FRAME_WND_CLASS2() for CFrameWindowImplBase CMemDlgTemplateT: Added new window traits for dialog controls to avoid painting problems with WS_CLIPCHILDREN and WS_CLIPSIBLINGS CWindowEx: Added methods for Dialog-only messages Fix for #315 WTL::RunTimeHelper::IsWin7 works incorrectly on Windows 10 if versionhelpers.h is not used Fix for bug #300 Error in CZoomScrollWindowImpl with setting SetZoomMode(ZOOMMODE_IN) Fix for bug #298 InitDialogBaseUnits takes LOGFONT by value Fix for CResource::LoadEx() - wrong order for parameters to ::FindResourceEx() Fix for warning C4555: expression has no effect when using BEGIN_MSG_MAP_EX and BEGIN_DDX_MAP Fix for bug #266 Icon loading for hi-dpi environments Fix for bug #319 atlprint.h: Incorrect offsets in DEVNAMES struct Samples: Updated for WTL10, renamed project files to indicate VS version, code and file cleanup Controls: Added CListViewCtrl::SelectAllItems() Improved CListViewCtrl::SelectItem() to call SetSelectionMark() and remove selection Added another variant of CListViewCtrl::Scroll() Fix for bug #321 Missing HTREEITEM parameter to TreeView GetNextSelected() methods Added CEdit methods for new Edit messages added in Windows 10.0.17763 CRichEditCtrl: Added GetTypographyOptions() and SetTypographyOptions() that were missing Added CString variant of CMultiPaneStatusBarCtrlImpl::GetPaneText() Fix for bug #268 CImageListManaged throws ATL assert when using attach or operator = Splitter: CSplitterImpl: Increased m_nPropMax to handle super-high resolutions CSplitterWindowImpl: Added new 'flat' splitter bar drawing style Used DECLARE_WND_CLASS_EX2() for CSplitterWindowT TabView: Added support for auto scroll when dragging tabs to reposition them Extended drag area to the whole client area of CTabViewImpl Added hover close buttons to tabs SetActivePage() - set focus only if main window is active OnTabContextMenu() to pass the correct tab item to OnContextMenu() CTabViewImpl: Uses ShowWindow() with TRUE/FALSE instead of SW_SHOW/SW_HIDE Ribbon: Fix for bug #317 SpinnerCtrlImpl - Failed to update string properties Don't use function pointers to templated functions Cracked Handlers: Added MSG_WM_NCMOUSEHOVER() and MSG_WM_NCMOUSELEAVE() Added MSG_WM_GESTURE, MSG_WM_GESTURENOTIFY, MSG_WM_DPICHANGED, MSG_WM_APPCOMMAND Fix for bug #322 atlcrack.h: Incorrect signature in comment for MSG_WM_MDIACTIVATE Fix for bug #302 MSG_WM_WTSSESSION_CHANGE should crack lParam as session Id Fix for bug #284 MSG_WM_XBUTTONDOWN inconsistent with MSDN Fix for bug #286 MSG_WM_KEYDOWN cracks wParam as TCHAR, should be a virtual key Clang specific fixes: Use C++-style instead of C-style struct initialization Remove superfluous semicolons Add comment for implicit fallthrough in switch statements