Visual C++ programmer's guide/Multithreading topics/Multithreading programing tips:
"If you have a multithreaded application that creates a thread in a way other than using a CWinThread object, you cannot access other MFC objects from that thread. In other words, if you want to access any MFC object from a secondary thread, you must create that thread with one of the methods described in the Multithreading: Creating User-Interface Threads or Multithreading: Creating Worker Threads articles. These methods are the only ones that allow the class library to initialize the internal variables necessary to handle multithreaded applications."
see also
http://www.microsoft.com/msj/0799/Win32/Win320799.aspx