1.回调函数设为 静态类成员函数,如果回调函数要访问类成员变量,那可以将类实例化指针this传给回调函数,或者 定义一个静态类指针,类初始化的时候,赋值指向当前类实例。
COutputWnd { ... static void __stdcall RecvErrMsg( const unsigned int nMsgId, const char * pMsg ); static void __stdcall RecvData( const char * pData, const unsigned int DataLength); static COutputWnd * g_pCPW; static UINT ConnectFunc(LPVOID lpParam); ... } COutputWnd::COutputWnd() { COutputWnd::g_pCPW = this; } bRet = ConnectServer(pRC, 500,12314, 0,RecvData,RecvErrMsg);
void __stdcall COutputWnd:: RecvErrMsg( const unsigned int nMsgId, const char * pMsg )
{
CString cStr = pMsg;
g_pCPW-> m_wndOutputDebug.AddString(cStr );
}