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.