Info about the Open Source code in the Shaker folder

The "Shaker" subfolder, in the same parent folder as this ReadMe.html file, is a Visual Studio 2017 project folder with the code for Shaken, not stirred version 3.3 (with some temp files deleted to reduce the download size). You can open the project's "Shaker.sln" file in Visual Studio 2010 or later, including Microsoft's free "Visual Studio Community" 2017 edition at https://www.visualstudio.com/downloads/

There's also a "Shaker Help" subfolder, containing a Microsoft HTML Help Workshop project to generate the Shaker.chm Help file. To update the Help, edit or replace the HTML and image source files, then open the shaker.hhp project file in HTML Help Workshop, a free download at https://www.microsoft.com/en-us/download/details.aspx?id=21138

Some of the code here needs some explanation to help a new author to work with it, in particular the "Z..." and "CSettings" classes used in this project. Unfortunately I haven't yet written documentation for those classes. I'm only posting this code now, without detailed documentation, because I'm posting the new release version of the program, and as Open Source I should also post the code.

I recommend you wait until I post an updated Open Source download, with documentation for my custom classes, by 2018 or probably earlier, before you work with this code. When I've added documentation to the Open Source download, I'll add a note indicating that in the Download section of the Shaken, not stirred homepage (so you can see when there's a new download with added documentation).

Another issue to consider is years-old Shaker code, now considered deprecated in Visual Studio 2017. This program uses the hash_map class, which VS 2017 suggests replacing with the newer unordered_map class. VS 2017 also complains about classic string functions relying on the null terminator instead of explicitly defining the the string length. To avoid warnings/errors about those, I added the following lines to stdafx.h (included in this Open Source download) to avoid warnings or errors about that code:

#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NON_CONFORMING_SWPRINTFS

The above #define entries work with Visual Studio 2017 to avoid warnings or errors , but later Visual Studio versions might not support those instructions. In that case, you'd need to replace the deprecated code (e.g. hash_map, or VS equivalents like _tcscpy for strcpy) with whatever substitutes Visual Studio tells you to use.

Just an outline for now of the custom classes used in Shaken not stirred, more details later:

The ZWin, ZDlg and ZWinUtil classes are lightweight substitutes for the Microsoft Foundation Classes' CWin and CDialog, which I wrote to provide some of the convenience and less typing of MFC but without all the overhead. Anywhere code from those classes is used, you can replace it with standard Windows API code (not MFC code). Most custom ZWin or ZDlg commands are just macros defined in ZWin.h or ZDlg.h, mapped to Windows API commands which could instead be directly used..

The CSettings class is one I wrote to reduce the typing required to read and write from a program's .ini file. As with the "Z..." classes above, you can always replace a CSettings command with the Windows API equivalent (though it might require more typing).

The CZDialog class is a mutant hard to explain, combining MFC's CDialog and my ZDlg classes. I originally wrote the program without MFC, using just my "Z..." classes. But later to add a thumbnail preview in the Album Art utility, I used PeterHarrie's CPicture class which depended on MFC. That required the window with that thumbnail, and all parent generation windows, to be MFC CDialog class windows. To accommodate that without replacing all the prior ZDlg code, I derived the CZDialog class from MFC's CDialog, with added code to handle the original ZDlg commands.*

* Does this verbiage make your head hurt? Mine too. Eventually, can't promise when, I'll release code for Shaken, not stirred without the Album Art utility, so no need for MFC or CZDialog. That code will be much easier to work with. Check the Download section of the Shaken, not stirred homepage to see if the Open Source download also includes the no-MFC version.