引入位图的代码如下:
                    case WM_PAINT:
                        
                        hdc=BeginPaint(hWnd,&ps);
                hMemDc=CreateCompatibleDC(hdc);
                SelectObject(hMemDc,hSun);
                BitBlt(hdc,0,0,1000,1000,hMemDc,0,0,SRCCOPY);
                DeleteDC(hMemDc);
                    case WM_LBUTTONDOWN:
                        hDc=GetDC(hWnd);
hdc=BeginPaint(hWnd,&ps);
hMemDc=CreateCompatibleDC(hdc);

SelectObject(hMemDc,hBlack);
BitBlt(hDc,33+48*x,31+48*y,48,48,hMemDc,0,0,SRCCOPY);
DeleteDC(hMemDc);
ReleaseDC(hWnd,hDc);  
        问题所在就是当最小化窗口,然后再最大化窗口,换而言之就是只要窗口一旦被覆盖,hSun引入的位图没有问题,但是hBlack引入的位图就会消失,就是说在case WM_PAINT:下引入的位图没有问题,但不在CASE WM_PAINT:下引入的位图就会消失,不知道是怎么回事?有什么办法可以解决此问题吗?请各位高手帮忙找点下……不胜感激……在此先谢过了……

解决方案 »

  1.   

    这是必然的,因为当窗口被覆盖;程序由最小化恢复等等情况,
    windows会发送WM_PAINT消息到窗口,以使窗口进行重绘,你的hSun指向的位图在WM_PAINT消息的处理中,被重新绘制到窗口中,所以没有问题
    WM_LBUTTONDOWN消息在上述情况下,不会产生,所以窗口重绘时就不会输出hBlack位图对于要和窗口保持一致的位图等信息,最好都在WM_PAINT中处理,否则就要自行设计了
      

  2.   

    楼主,窗口最小化到最大化,对于Windows来说,就是需要完全重绘窗口的内容。以前的内容都失效了。
    所以,你需要保持的内容,都需要重新绘制。windows不会自己保存。