引入位图的代码如下:
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:下引入的位图就会消失,不知道是怎么回事?有什么办法可以解决此问题吗?请各位高手帮忙找点下……不胜感激……在此先谢过了……
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:下引入的位图就会消失,不知道是怎么回事?有什么办法可以解决此问题吗?请各位高手帮忙找点下……不胜感激……在此先谢过了……
解决方案 »
- volatile int *ptr
- 窗口菜单栏加载背景图//怎么加呢?不是弹出菜单也不是右键菜单
- EDIT BOX内容形式设置问题
- DLL小问题
- “fatal error C1001:内部编译器错误”是怎么回事?
- 怎样把一个tree放到listbox中?
- 一个很严重的问题 - who know ?
- 如何改变CWnd的背景颜色(高手们请帮忙)
- VC如何得到并控制非windows程序的控件
- m_wndStatusBar.SetPaneText(m_wndStatus.CommandToIndex(ID_INDICATOR_CLOCK),s);
- (mfc80d.dll) 处未处理的异常: 0xC0000005: 读取位置 0xccccccc0 时发生访问冲突 ?
- 怎么样用WebBrowser控件打开本地的html文件浏览?
windows会发送WM_PAINT消息到窗口,以使窗口进行重绘,你的hSun指向的位图在WM_PAINT消息的处理中,被重新绘制到窗口中,所以没有问题
WM_LBUTTONDOWN消息在上述情况下,不会产生,所以窗口重绘时就不会输出hBlack位图对于要和窗口保持一致的位图等信息,最好都在WM_PAINT中处理,否则就要自行设计了
所以,你需要保持的内容,都需要重新绘制。windows不会自己保存。