Thanks to several people on several forums who supplied helpful answers to this and several spawned questions. The real problem as all too often was something completely different.
See comments for additions needed.
Gotcha #1 was & operator does not work on WTL classes
Gotcha #2, is never name your events. If you link with unknown other objects,
its likely someone already used the same name, and Windows decides that the same names means the same event, even though multiple CreateEvent() calls are use. No Name,
no "aliasing" of supposedly different events.
Non-Gotcha, if you DON'T want the "main" message handler handling your messages, you don't need _Module or to "tell" anything about your message loop. If you want independent
window with independent loop, see below.
===================================================
static DWORD WINAPI MyRunThread(__in LPVOID lpParameter)
{
CMessageLoop theLoop;
WTLsubclass *nav = (WTLsubclass *) lpParameter;
nav->CreateWindow();
SetEvent(WindowCreatedEvent)
int nRet = theLoop.Run();
return nRet;
}
CLASSnav nav[1];
CLASSnav *pnav = nav; CreateThread(0,0,MyRunThread,pnav,0,0);