vc6中如何实现橡皮条选择(rubber banding)?

laofang 2005-09-01 02:34:34
橡皮条选择就是拖动鼠标进行对象选择时,出现一个矩形虚框,常见于绘图软件,windows资源浏览器中文件的选择也是。

CRectTracker类好像不适用于存在多个对象的情况。

网上有一些C#的例子,但VC6我还找不到可供参考的代码。请各位大侠指点,最好有代码.
...全文
206 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
laofang 2005-09-22
  • 打赏
  • 举报
回复
我现在已完成一个测试程序,基本实现了画图(简单矩形)、鼠标选择、拖动、改变图形大小等功能,基本可用,在此将代码贴出来,请大家指点。
同时也遇到一点问题,请大家指点:
1.双击消息不知为何被屏蔽了。
2.改变图形大小时,如果把左上角的手柄拖过右下角手柄时(所谓invert),手动过程中会留下一些橡皮线;
3.不知为何用SetPaneText不能更新状态栏?

------
简要说明:
1.鼠标四种状态:画图,选择,拖动,track(改变图形大小)
2.画图及其它鼠标形为参考powerdesigner,如点击一个按钮开始画图(OnButtonDrawRect()),右键取消
3.其它看代码,有一些注释,不清楚请跟帖。
代码马上贴出来。
laofang 2005-09-02
  • 打赏
  • 举报
回复
up
laofang 2005-09-01
  • 打赏
  • 举报
回复
to teli_eurydice(哭泣的仙人掌。。。。) :

重载CRectTracker,是可以试一下:
至少要重载HitTest,TrackRubberBand,Track。。。我先试试看。
teli_eurydice 2005-09-01
  • 打赏
  • 举报
回复
CRectTracker

自己重载再修改一下,很好用
dirdirdir3 2005-09-01
  • 打赏
  • 举报
回复
你判断是选中的话就刷新为选中的状态,由选中变为非选中时刷新为非选中状态。
laofang 2005-09-01
  • 打赏
  • 举报
回复
自己up
laofang 2005-09-01
  • 打赏
  • 举报
回复
这个我认真想过,响应WM_LBUTTONDOWN,WM_MOVE和WM_LBUTTONUP消息:

OnLButtonDown:做上左键按下标记;
OnMouseMove:如果左键按下,按你所说的方法用异或方式画矩形虚框;
OnLButtonUp:取消左键按下标记。
没错吧?

我现在是不知道如何在鼠标移动过程中,将选择框中的对象画出带tracker的形状并刷新,请指点。
快乐鹦鹉 2005-09-01
  • 打赏
  • 举报
回复
我一般不用CRectTracker。自己响应鼠标移动和点击事件绘制矩形框,每次绘制新矩形前,将原矩形用异或方式再画一遍。当矩形绘制结束后,用最后的矩形大小位置去选择对象。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧