绘制一条宽度为3个象素的红色线条是这样吗?
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc = ::BeginPaint(hwnd,&ps);
HPEN hPen = ::CreatePen(PS_SOLID,3,RGB(255,0,0));
HPEN hOldPen = (HPEN)::SelectObject(hdc,hPen);
::MoveToEx(hdc,0,100,NULL);
::LineTo(hdc,500,100);
::SelectObject(hdc,hOldPen);
::DeleteObject(hPen);
::EndPaint(hwnd,&ps);
break;错误:initialization of 'hOldPen' is skipped by 'case' label
    :see declaration of 'hPen'

解决方案 »

  1.   

    代码没问题,应该是编译选项导致的吧。
    修改成下面的格式:
    case WM_PAINT:
    {
            HDC hdc;
            PAINTSTRUCT ps;
            HPEN hPen;
            HPEN hOldPen;        hdc = ::BeginPaint(hwnd,&ps);
            hPen = ::CreatePen(PS_SOLID,3,RGB(255,0,0));
            hOldPen = (HPEN)::SelectObject(hdc,hPen);        ::MoveToEx(hdc,0,100,NULL);
            ::LineTo(hdc,500,100);
            ::SelectObject(hdc,hOldPen);
            ::DeleteObject(hPen);
            ::EndPaint(hwnd,&ps);
    }
            break;
      

  2.   


    case WM_PAINT:
    {
            HDC hdc;
            PAINTSTRUCT ps;
            hdc = ::BeginPaint(hwnd,&ps);
            HPEN hPen = ::CreatePen(PS_SOLID,3,RGB(255,0,0));
            HPEN hOldPen = (HPEN)::SelectObject(hdc,hPen);
            ::MoveToEx(hdc,0,100,NULL);
            ::LineTo(hdc,500,100);
            ::SelectObject(hdc,hOldPen);
            ::DeleteObject(hPen);
            ::EndPaint(hwnd,&ps);
            break;
    }
    加上大括号
     
      

  3.   

    为什么要{} ,有人知道吗?case :
         {     }
      

  4.   

    这是C++的规定,为了防止你在下面的CASE分支中使用未初始化或者未定义的变量