VC++ GDI问题
请问类似资源管理器里圈选多个文件的矩形是如何实现的,就是按着鼠标拖动的时候实时的画出矩形,一放手就没的。我做的总是有拖影,不知道怎么擦除上一次画的矩形,全屏重画速度又太慢...
请问类似资源管理器里圈选多个文件的矩形是如何实现的,就是按着鼠标拖动的时候实时的画出矩形,一放手就没的。我做的总是有拖影,不知道怎么擦除上一次画的矩形,全屏重画速度又太慢,请哪位大侠执教一下。
展开
1个回答
展开全部
为了防止背景闪烁,使用双缓冲绘图;
重载以下三个消息:
WM_MOUSEMOVE
WM_LBUTTONUP
WM_LBUTTONDOWN
WM_LBUTTONDOWN时记录下当前的坐标位置P0,同时状态变量m_bDrawFlag=TRUE;
WM_MOUSEMOVE里,当m_bDrawFlag==TRUE时,重绘背景(擦掉了上次绘制的矩形),用当前的鼠标位置和刚才记录的P0绘制矩形;
WM_LBUTTONUP时,当m_bDrawFlag==TRUE时,重绘背景(擦掉了上次绘制的矩形),同时m_bDrawFlag==FALSE
不知你能理解吗,今天我没有时间了,不明白明天你可以再找我。
重载以下三个消息:
WM_MOUSEMOVE
WM_LBUTTONUP
WM_LBUTTONDOWN
WM_LBUTTONDOWN时记录下当前的坐标位置P0,同时状态变量m_bDrawFlag=TRUE;
WM_MOUSEMOVE里,当m_bDrawFlag==TRUE时,重绘背景(擦掉了上次绘制的矩形),用当前的鼠标位置和刚才记录的P0绘制矩形;
WM_LBUTTONUP时,当m_bDrawFlag==TRUE时,重绘背景(擦掉了上次绘制的矩形),同时m_bDrawFlag==FALSE
不知你能理解吗,今天我没有时间了,不明白明天你可以再找我。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询