Archive
CNTService v2.03
Just to let everyone know that v2.03 of CNTService has been released. Updates for this version include:
- Fixed more Clang-Tidy static code analysis warnings in the code.
- Fixed a compile problem in ntservEventLogRecord.cpp in VC 2019 related to missing iterator header file.
- Updated the codebase to support GetSharedServiceRegistryStateKey and GetSharedServiceDirectory APIs.
- Fixed up the logic and return values for the CNTService::GetRegistryStateKey and CNTService::GetServiceDirectory methods now that there is proper documentation available for these APIs.
DtWinVer v2.44
Just to let everyone know that v2.44 of DtWinVer has been released. Updates for this version include:
- Added support for the following product types: PRODUCT_TURBINE_SERVER
ShellCtrls2 v1.0
One of the many GUI classes I have developed and published on my web site is CFileTreeCtrl. This is a implementation from first principles of a tree control similar to the left hand side of Windows Explorer. Because it was implemented with custom code, it has diverged from the tree control shown in Windows Explorer in recent versions of Windows. In addition, some features in CFileTreeCtrl such as network enumeration no longer work in recent versions of Windows. In addition it would be nice to have a list control implementation similar to the right hand side of Windows Explorer. As of Visual Studio 2008 Service Pack 1, two classes became available which implemented this functionality using MFC. They are called CMFCShellTreeCtrl and CMFCShellListCtrl. I’ve recently taken a look at these two classes, but I wanted to bring forward the functionality of CFileTreeCtrl in an implementation which provides better integration with the shell. I also took inspiration and ideas from the following codeproject articles: https://www.codeproject.com/Articles/1073213/Extending-MFC-shell-controls-functionality and https://www.codeproject.com/Articles/2271/ShellFolderTree. The result of all this work is ShellCtrls2.
The classes provided are:
CPIDL which provides a RAII class wrapper for a LPITEMIDLIST aka PIDLs. PIDLs are identifiers which the Windows shell uses to identify all objects which make up the Shell namespace. This class is based on the PIDL class provided by Oz Solomon with WndTabs extension for Visual C++ 6.0 but reimplemented using modern C++ 11 idioms.
CShellItemInfo2 This class is what is stored in the item data for each item in the tree control or list control
CShellTreeCtrl2 This class is an improved version of the built-in MFC class CMFCShellTreeCtrl
CShellListCtrl2 This class is an improved version of the built-in MFC class CMFCShellListCtrl
The demo application included in the download exercises all the functionality of each of the classes. A screen capture of the sample app running is as follows:
W3Mfc v2.19 / CWSocket v1.47
Just to let everyone know that v2.19 of W3Mfc & v1.47 of CWSocket has been released. Updates for this version include:
- Fixed an issue in CWSocket::ThrowWSocketException where exceptions were thrown as const CWSocketException* when CWSOCKET_MFC_EXTENSIONS was defined. This causes an unhandled exception bug in W3MFC when compiled with VS 2019 and CWSOCKET_MFC_EXTENSIONS was defined, where catch(CWSocketException*) call sites throughout the codebase would not handle an exception thrown of this type. It looks like the logic used to setup exception handling has been changed in VS 2019 quite a bit (see https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/ for the details). The code in CWSocket::ThrowWSocketException has been updated to now throw a CWSocketException* exception when CWSOCKET_MFC_EXTENSIONS was defined.