工具栏的问题

来灵 2007-12-21 11:34:36
我在对话框上创建了一个工具栏,使用位图给工具栏的按钮加载图像,比如一个三角形。
现在我想实现的功能是:当用鼠标点击工具栏上的三角形按钮后,把光标移到对话框的其它区域,然后再次左键点击鼠标,这时就会有一个三角形出现在所点之处,并且该三角形可以用鼠标来移动位置,和改变大小。类似于VC中的对话框编辑器对控件的操作,请问我该如何做呢?
...全文
128 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
来灵 2007-12-25
  • 打赏
  • 举报
回复
这个小问题解决了哈
来灵 2007-12-25
  • 打赏
  • 举报
回复
好像要在OnPaint()函数里重绘,具体的该怎么弄呢?
来灵 2007-12-25
  • 打赏
  • 举报
回复
我现在在鼠标所点位置可以输出一幅位图了,但是当把对话框最小化,然后再还原,图片却看不见了。还有,若把对话框藏到其它窗口之后,然后再把对话框置前,还会出现这种问题。不知道什么原因呢?
iyranly 2007-12-24
  • 打赏
  • 举报
回复
以下是c++的代码,可以绘制三角形,你可以参照做一些改动。

CClientDC dc(this);
CPoint points[3]; //定义三个点
points[0].x = cx - 45;
points[0].y = cy + 45;
points[1].x = cx;
points[1].y = cy - 45;
points[2].x = cx + 45;
points[2].y = cy + 45;
dc.Polygon (points, 3);//绘制三角形


简单的绘制用gdi即可,如果要更多功能,你可以选择gdi+,因为vs2003对gdi+的操作更加方便。看看msdn
来灵 2007-12-24
  • 打赏
  • 举报
回复
怎么没人呢?
iyranly 2007-12-21
  • 打赏
  • 举报
回复
你在对话框中捕获鼠标到鼠标点击后,在当前点用gdi(或者gdi+)画出一个三角形,这个应该可以吧!我记得里面有参数指定坐标位置的。

移动位置就是LButtonDown和MouseMove的事了,在里面重新画三角形。

改变大小,当鼠标移动到某一边上,重新画三角形,画的时候注意闪烁的处理。
来灵 2007-12-21
  • 打赏
  • 举报
回复
我使用的工具是:VS 2003.NET
来灵 2007-12-21
  • 打赏
  • 举报
回复
TO iyranly
我对gdi不了解,能不能讲详细一点儿呢?谢谢了
还有,我打算先实现一个这样的图像,还有其它的先不考虑。但这些图像打算都用位图来显示的。也谢谢HELLO_wallace :)
HELLO_wallace 2007-12-21
  • 打赏
  • 举报
回复
设置一个标记为FALSE
点击工具栏的按钮后,让它为TRUE
然后在OnLButtonDown()中
判断如果标记为FALSE那么什么也不做
如果标记为TRUE,那么然后在鼠标位置输出该图
鼠标移动位置时类似在OnMouseMove和OnLButtonDown中处理坐标
改变大小时:BOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop );
改变nWidth和nHeight

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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