我把贴图片的功能写了一个自己的函数来实现的。这个自己写的函数主要用的贴图函数是BitBlt。然后在WM_PAINT消息里面, 连续两次调用了这个自己写的函数,(函数包括了那些PAINTSTRUCT ps;等描述)目的是贴一个图片,然后再在这个图片上显示另一张图片。奇怪的是,第二张图片,怎么也显示不出来,而只能显示第一张。请问这是怎么回事?

解决方案 »

  1.   

    写了如下贴图片函数:void draw(pic id)
    {
    PAINTSTRUCT ps;
    HDC hdc;
    hdc = BeginPaint(hWnd, &ps);...::BitBlt //绘图处理EndPaint(hWnd, &ps);
    }以上这个函数在WM_PAINT消息里面执行了两次,如下:
    case WM_PAINT: draw(pic id1);draw(pic id2);break;然后在界面上只看到了第一副图片,没有显示出第二张图片。
      

  2.   

    把hdc = BeginPaint(hWnd, &ps); 
    EndPaint(hWnd, &ps); 放到draw函数外面吧。draw()函数改成draw(HDC hdc, pic id);
      

  3.   

    主要原因是在一个WM_PAINT消息里只能用一次BeginPaint,第二次调用取得的HDC已经没法再用于绘制了,所以代码应该改成只调用一次BeginPaint
      

  4.   

    把BeginPaint和EndPaint放到draw函数外面,WM_PAINT消息里面调用了BeginPaint和EndPaint后再调用BeginPaint,函数是返回失败的.