我写了一个win32程序,就是在客户区用BitBlt显示一个本地机器上的位图,当鼠标点击到客户区的位图并移动时,位图的显示位置会跟着移动,但是每次我在WM_MOUSEMOVE消息中计算出移动的位置,然后调用InValidateRect(hWnd, NULL, true);
UpdataWindow(hWnd);强制刷新客户区,这张图就不显示了,为什么啊?是不是应该先保存一遍客户区?
UpdataWindow(hWnd);强制刷新客户区,这张图就不显示了,为什么啊?是不是应该先保存一遍客户区?
解决方案 »
- 请问SendInput可以后台模拟鼠标键盘吗????
- C***PropPage属性页 的对话框什么时候才能显示出来
- 请问此问题怎么解决?ASSERT_VALID fails with illegal vtable pointer.
- 鼠标怎么变成"放大镜"形?
- 一个LINK 2001 和 FATIL ERROR LNK1120 错误,在线等,立马给分!!1
- 请教一个 SetWindowsHookEx 函数的问题
- 结构大小与sizeof() 得到的值不一致
- 象瑞星那样的杀毒软件,WORD一启动就能检测到,我要作个OUTLOOK助手,怎么能检测到OUTLOOK的启动呢
- 一个令我头痛的问题:望高手赐教。
- 难题求解,消息相应的先后问题
- 异常捕获..
- 在ActiveX(MFC)中通过CreateNewItem方式创建Word控件时总是失败,但是以CreateFromFile方式创建对象时却能成功
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps); ///红色框
hPen = CreatePen(PS_SOLID, 0, RGB(255, 0, 0));
SelectObject(hdc, hPen);
DrawFrame(hdc, CLIP_FRAME_X, CLIP_FRAME_Y, CLIP_FRAME_WIDTH, CLIP_FRAME_HEIGHT, 5);
///显示位图
memDC = CreateCompatibleDC ( hdc ); SelectObject ( memDC, hBitmap ); bitBiltError = BitBlt(hdc,showX,showY,ttt.bmWidth, ttt.bmHeight,memDC,0,0,SRCCOPY); if ( !bitBiltError )
{
MessageBox(hWnd, TEXT("BITBLT ERROR"), TEXT("BITBLT ERROR"), MB_OK);
} EndPaint(hWnd, &ps);
break;肯定是在WM_PAINT中画的啊,每次那个红色框都能显示,但就是位图无法显示
drop时在还原
InValidateRect(hWnd, NULL, true);
UpdataWindow(hWnd)
强制刷新的时候,这张位图就不显示了,我调用BitBlt的返回值也是true...
看下这里面的参数是否正确
showX,showY,ttt.bmWidth, ttt.bmHeight,0,0
看看这几个参数的值
前面加一行 ReleaseDC(memDC);
不画框也是这样,触发WM_LBUTTONDOWN强制刷新就没有显示了.
而是DeleteDC(memDC);不过还是谢谢了...