win32 位图位置跟着鼠标移动显示,该如何解决
win32 位图位置跟着鼠标移动显示
我写了一个win32程序,就是在客户区用BitBlt显示一个本地机器上的位图,当鼠标点击到客户区的位图并移动时,位图的显示位置会跟着移动,但是每次我在WM_MOUSEMOVE消息中计算出移动的位置,然后调用InValidateRect(hWnd, NULL, true);
UpdataWindow(hWnd);强制刷新客户区,这张图就不显示了,为什么啊?是不是应该先保存一遍客户区?
------解决方案--------------------
单独创建一个窗口 平时是CHILD属性 隶属于你的应用程序, 在鼠标点击拾取以后 变成POPUP属性 跟随鼠标MoveWindow即可, 释放后又恢复到应用程序的CHILD窗口
------解决方案--------------------
这不是个好办法,鼠标移动强制刷新,刷新频率会非常频繁。
------解决方案--------------------
可以在拖动的时候把鼠标设为位图
drop时在还原
------解决方案--------------------
画笔用完之后好像没看见你复位
------解决方案--------------------
EndPaint(hWnd, &ps);
前面加一行 ReleaseDC(memDC);
------解决方案--------------------
试试13楼说的方法
我写了一个win32程序,就是在客户区用BitBlt显示一个本地机器上的位图,当鼠标点击到客户区的位图并移动时,位图的显示位置会跟着移动,但是每次我在WM_MOUSEMOVE消息中计算出移动的位置,然后调用InValidateRect(hWnd, NULL, true);
UpdataWindow(hWnd);强制刷新客户区,这张图就不显示了,为什么啊?是不是应该先保存一遍客户区?
------解决方案--------------------
单独创建一个窗口 平时是CHILD属性 隶属于你的应用程序, 在鼠标点击拾取以后 变成POPUP属性 跟随鼠标MoveWindow即可, 释放后又恢复到应用程序的CHILD窗口
------解决方案--------------------
这不是个好办法,鼠标移动强制刷新,刷新频率会非常频繁。
------解决方案--------------------
可以在拖动的时候把鼠标设为位图
drop时在还原
------解决方案--------------------
画笔用完之后好像没看见你复位
------解决方案--------------------
EndPaint(hWnd, &ps);
前面加一行 ReleaseDC(memDC);
------解决方案--------------------
试试13楼说的方法