HANDLE sHandle = (HANDLE)_beginthread(&servThread,0,&m_hWnd);
error C2597: 对非静态成员“CWnd::m_hWnd”的非法引用
error C2664: “_beginthread”: 不能将参数 3 从“HWND CWnd::* ”转换为“void *”为什么不行??怎么传递

解决方案 »

  1.   

    HANDLE sHandle = (HANDLE)_beginthread(&servThread,0,(void*)m_hWnd);
    MFC最好用AfxBeginThread,非MFC用_beginthreadex
      

  2.   


    也不行 ,
    error C2440: “类型转换”: 无法从“”转换为“void *”
      

  3.   


    在该线程里获取窗口句柄,再传给第二个线程thread1 启动 --> 传m_hWnd --> thread2 启动 --> 传m_hWnd (thread1)
      

  4.   

    方法很多,用个全局变量保存m_hwnd,或者给类添加一个静态成员变量保存m_hwnd,还有其他些方法。
      

  5.   

    这个回调函数是静态的,你也可以通过参数把m_hwnd传进去,在子窗口里调用这个回调函数时,获取主窗口句柄,传进去。
      

  6.   

    _beginthread(&servThread,0,(void*)m_hWnd);
    void servThread(void * pParam)
    {
      HWND hwnd=(HWND)pParam;
     
    }