David,

I have a couple of suggested additions to your next release that are easy to include and would be of some use, at least, to me.

  • Definition of a predefined macro, with a name such as WIN32XX_VERSION that could be accessed during compilation, much like DATE_ and FILE__, for those who would like to keep track of which version of Win32++ they had last compiled under.

  • Definition of a predefined macro, with a name such as WM_MYAPP that would be set equal to WM_APP+<end of="" Win32++="" resource="" messages="" +="" 1="">, so that users can be assured they define their resources unambiguously. MSDN defines WM_APP as "The WM_APP constant is used to distinguish between message values that are reserved for use by the system and values that can be used by an application to send messages within a private window class.". To users of Win32++, they are the application, and Win32++ is part of the system. But to you, of course, you are an app and the WinApi is the system.

Also, I would urge you to make the CString [] operator operable as lhand values, so assignments such as string[0] = '*'; would work.

I have found that there are quite a few errata in the user manual. I haven't jotted down all that I have run across, but here are a few:

  • CFrame::OnHelp() : stated as being type void, but actually returns LRESULT.

  • CFile::GetFileName(), GetFilePath(), and GetFileTitle() all state "Converts the CFile to a HANDLE", but they return CStrings.

  • CString::SetAt() says that it "Creates a logical brush that has the specified solid color.".

I thought you might want to know.

Sincerely,
Bob