zoukankan      html  css  js  c++  java
  • error C2360: ***的初始化操作由“case”标签跳过

    今天用VS2010学习GDI+编程时,在WM_PAINT消息处理时,提示如下错误:

    错误 2 error C2360: “hDCMem”的初始化操作由“case”标签跳过

    下面是错误处源代码:

    case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);
    // TODO: 在此添加任意绘图代码...
    HDC hDCMem = ::CreateCompatibleDC(hdc);
    HBITMAP hOldBmp = (HBITMAP)::SelectObject(hDCMem,hbmpBack);
    BITMAP bmp;
    ::GetObject(hbmpBack,sizeof(BITMAP),&bmp);
    ::BitBlt(hdc,0,0,bmp.bmWidth,bmp.bmHeight,hDCMem,0,0,SRCCOPY);
    ::SelectObject(hDCMem,hOldBmp);
    ::DeleteDC(hDCMem);
    EndPaint(hWnd, &ps);
    break;

    查了下网上,是说这个case语句可能没有被执行到(执行其他case了)导致变量没有初始化而导致接下来的错误,所以需要把变量放到switch前面声明初始化,如果你不想把初始化放在switch前面,还有一个解决方法,在swith中定义内部变量加括号,就可以了。

    修改后的代码:

    case WM_PAINT:
    {
    hdc = BeginPaint(hWnd, &ps);
    // TODO: 在此添加任意绘图代码...
    HDC hDCMem = ::CreateCompatibleDC(hdc);
    HBITMAP hOldBmp = (HBITMAP)::SelectObject(hDCMem,hbmpBack);
    BITMAP bmp;
    ::GetObject(hbmpBack,sizeof(BITMAP),&bmp);
    ::BitBlt(hdc,0,0,bmp.bmWidth,bmp.bmHeight,hDCMem,0,0,SRCCOPY);
    ::SelectObject(hDCMem,hOldBmp);
    ::DeleteDC(hDCMem);
    EndPaint(hWnd, &ps);
    break;
    }

    再编译就能成功运行。

  • 相关阅读:
    案例 :表格隔行变色效果
    案例:百度换肤
    案例:排他思想(算法)
    JS运动基础
    DOM的高级应用
    jsDOM操作应用
    js中的DOM基础
    js实现向左向右无缝轮动
    JavaScript定时器的使用
    JavaScript基础2
  • 原文地址:https://www.cnblogs.com/AlexanderZhao/p/12878996.html
Copyright © 2011-2022 走看看