hdc = GetDC(hwnd);
  
  HPEN green_pen = CreatePen(PS_SOLID, 1, RGB(0,255,0));   HPEN old_pen = SelectObject (hdc, green_pen);   MoveToEx(hdc, 10, 10, NULL);
  LineTo(hdc,100, 100);   SelectObject(hdc, old_pen);
  DeleteObject(green_pen);   ReleaseDC(hwnd,hdc);
我想用绿色画一条从(10,10)到坐标(100,100)的线,但是编译的时候报错~~error C2440: 'initializing' : cannot convert from 'void *' to 'struct HPEN__ *'  Conversion from 'void*' to pointer to non-'void' requires an explicit cast

解决方案 »

  1.   

    全改为,如果你是用MFC编程           HDC hdc = ::GetDC(this->m_hWnd );

      
      HPEN green_pen = ::CreatePen(PS_SOLID, 1, RGB(0,255,0));   HPEN old_pen = ::SelectObject (hdc, green_pen);
        ::MoveToEx(hdc, 10, 10, NULL);
      ::LineTo(hdc,100, 100);   ::SelectObject(hdc, old_pen);
      ::DeleteObject(green_pen);   ::ReleaseDC(hwnd,hdc);
      

  2.   

    hdc = GetDC(hwnd);
      
      HPEN green_pen = CreatePen(PS_SOLID, 1, RGB(0,255,0));   HPEN old_pen = SelectObject (hdc, green_pen);
                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~错了,返回值是HGDIOBJECT 强制类型转换 (HPEN)SelectObject(hdc,green_pen)      MoveToEx(hdc, 10, 10, NULL);
      LineTo(hdc,100, 100);   SelectObject(hdc, old_pen);
      DeleteObject(green_pen);   ReleaseDC(hwnd,hdc);
    我想用绿色画一条从(10,10)到坐标(100,100)的线,但是编译的时候报错~~error C2440: 'initializing' : cannot convert from 'void *' to 'struct HPEN__ *'  Conversion from 'void*' to pointer to non-'void' requires an explicit cast
      

  3.   

    原因建议你去查看 HGDIOBJ 和 HPEN 的定义,
    上面打错了,不好意思