The multi-thread startup of MFC uses afxbeginthread (), which is an external packaging of cwinthread. Direct use of cwinthread provides better control and can store "Inter-thread communication" data. Below is a simple cwinthread sub-class, using two undisclosed items in MFC. There are comments in the program.
# Include <afxwin. h>
Cwinapp theapp;
Class cuserthread: Public cwinthread
{
Public: // member functions
Cuserthread (afx_threadproc pfnthreadproc );
Static uint threadfunc (lpvoid PARAM );
Public: // Member Data
Int m_nstartcounter;
PRIVATE: // the "real" Startup Function
Virtual void go ();
};
Cuserthread: cuserthread (afx_threadproc pfnthreadproc)
: Cwinthread (pfnthreadproc, null) // unmarshented Constructor
{
M_bautodelete = false;
// Set the pointer to the class to be the startup value.
// M_pthreadparams is uninitialized ented,
// But there is no work-around.
M_pthreadparams = this;
}