//首先将窗体句柄传给线程参数
hWnd=GetSafeHwnd();
m_pThread=AfxBeginThread(ThreadAcquireData,hWnd);//启动线程//接下来我在线程中新建CDC对象
UINT ThreadAcquireData(LPVOID ThreadParam)
{//新线程,读取采集卡数据
    CDC* pDC=GetDC((HWND)ThreadParam); 
    ......
}但是提示错误:
error C2440: 'initializing' : cannot convert from 'struct HDC__ *' to 'class CDC *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast请各位英雄帮忙啊!!!!

解决方案 »

  1.   

    HDC hDC = GetDC();
    CDC *pDC;
    pDC->Attach(hDC);
      

  2.   

    改成//首先将窗体句柄传给线程参数 
    hWnd=GetSafeHwnd(); 
    m_pThread=AfxBeginThread(ThreadAcquireData,hWnd);//启动线程 //接下来我在线程中新建CDC对象 
    UINT ThreadAcquireData(LPVOID ThreadParam) 
    {//新线程,读取采集卡数据 
        HDC pDC=GetDC((HWND)ThreadParam); 
        ...... 

      

  3.   

    我改了,但下面的成员都找不到了啊
    pDC->SetMapMode(MM_ANISOTROPIC);
    pDC->SetWindowExt(CSize(20400,11720));
    pDC->SetViewportExt(rectClient.right,-rectClient.bottom);
    pDC->SetViewportOrg(rectClient.left,rectClient.bottom/2-80); //设置窗口左下角为原点坐标
    ......
      

  4.   

    HDC hDC = GetDC((HWND)ThreadParam); 
    CDC *pDC; 
    pDC->Attach(hDC);
    告诉过你了,这样子写,GetDC函数还是你自己的哪个样子!
      

  5.   

    或者如楼上直接用SDK函数SetMapMode(hDC,MM_ANISOTROPIC);
    这个样子。
      

  6.   

    使用pDC->Attach(hDC);
    提示错误:
    Unhandled exception in BioForcen.exe (MFC42D.DLL):0xC0000005: Access Violation
      

  7.   

    谢谢hxingz老兄的帮助,呵呵