如何在控件上画虚线框?

CSharp_XinBing1 2011-07-21 11:56:06
就是SDI程序,在视图上创建几个控件(CButton,CStatic)

想实现这样的功能:在视图上拖动出一个“橡皮筋”,即一个虚线框。
可以选择其中的控件。

但问题是:虚线框是在CView::OnPaint中绘制。而控件的绘制时机没办法控制。
因此画出来的虚线都是在控件下面显示的。

这个在一般程序中都是在控件上面显示虚线框的。这个要如何实现?请前辈指点,谢谢!
...全文
194 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcyw 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fandh 的回复:]
重载控件的OnPaint,在里面也画同样的方框。。。
[/Quote]

++1
CSharp_XinBing1 2011-07-21
  • 打赏
  • 举报
回复
但是只要是在CView::OnPaint中用CDC画图的话,
都会显示在CView上创建的控件之下。

但所有的有选择功能的程序,用鼠标拖出的虚线框,都是显示到控件之上的啊
Eleven 2011-07-21
  • 打赏
  • 举报
回复
可以考虑使用CRectTracker类
fandh 2011-07-21
  • 打赏
  • 举报
回复
重载控件的OnPaint,在里面也画同样的方框。。。
CSharp_XinBing1 2011-07-21
  • 打赏
  • 举报
回复
前辈帮助呀,在控件中也画同样的方框是什么意思啊
这个对所有控件都有效吗?
CSharp_XinBing1 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 machh 的回复:]
引用 1 楼 fandh 的回复:
重载控件的OnPaint,在里面也画同样的方框。。。


++1
[/Quote]
哦哦,这个怎么不太明白
在Windows操作系统上,VisualBasic作为一门计算机语言,功能非常强大,而且简单易学。VisualBasic提供可视化设计工具,编程人员可利用VisualBasic提供的控件轻松的“画”出应用程序的友好界面,因此容易入门,入门以后就有能力进一步学习难度更大的编程语言。VisualBasic作为编程人员的首选程序设计语言,有如下特点: 1、VisualBasic是开发Windows应用程序的强有力的工具,使用了最先进的程序设计思想,能轻而易举的开发出符合Windows规范和风格的应用程序; 2、VisualBasic在科学计算、多媒体软件开发、网络应用等方面都有强大的功能,尤其在数据库开发方面,提供了许多控件,便于连接、查询和显示查询结果,现在很多管理软件,包括一些大型软件,都是利用VisualBasic开发的; 3、VisualBasic改变了传统的程序的机制,采用“事件驱动”方式,用户操作产生不同的事件,程序根据这些事件去分别执行不同的子程序。编程人员可以分别编写出这样一些子程序,因此使编程难度大大下降。   在VisualBasic语言中,控件是用户界面的基本要素,是进行可视化程序设计的重要基础,它不仅关系到界面是否友好,还直接关系到程序的运行速度以及整个程序的好坏。每个控件都具有它的属性、方法和事件,设计窗体就必须很好的掌握控件的属性和应用方法。控件具有很多相同的属性,如标识控件名称的Name属性、标识控件标题的Caption属性、有效属性Enable、可见属性Visible、标识控件位置和大小的Top、Left、Width、Height、属性、定义背景色的BackColor属性、定义前景色的ForeColor属性和定义字体类型的Font属性,各个控件也有其特有的一些属性。   VisualBasic中的控件分为两种,即标准控件(或内部控件)和ActiveX控件。内部控件是工具箱中的“常驻”控件,始终出现在工具箱里,而ActiveX控件是扩展名为.ocx的文件(在Windows\System文件夹里),它是根据变成需要添加到工具箱里的。   在一般情况下,工具箱里只有标准控件,为了把ActiveX控件添加到工具箱里,可按以下步骤执行: (1)在菜单里选择“工程-部件”,弹出“部件”对话; (2)在对话中选择“控件”选项卡,显示ActiveX控件列表; (3)在列表中找到需要添加的控件名称,单击控件名称左侧的复选; (4)使用同样的方法选择需要添加的其它控件; (5)单击“确定”按钮,即可将所选ActiveX控件添加到工具箱里。 窗体(FORM)的常用属性 属性 说明 (Name)窗体的名称 ActiveControl返回焦点所在的控件,该属性设计阶段不可用,运行时只读。 Appearance外观效果,取值为:0 平面1 3D(立体) AutoRedraw是否自动刷新或重画窗体上所有图形[获得或设置从绘图(graphics)方法到一个持久性位图的输出],取值为:True False BackColor背景颜色,可从弹出的调色板选择。 BorderStyle设置边界类型,取值为: 0 None(无边界架)1 FixedSingle(窗口大小固定不变的单线架) 2 Sizable(窗口大小可变的标准双线架) 3 FixedDialog(窗口大小固定的对话窗体) 4 FixedToolWindow(窗口大小固定的工具箱窗体) 5 Sizable ToolWindow(窗口大小可变的工具箱窗体) Caption窗体的标题 ClipControls决定Paint事件的graphics方法是重画整个对象,还是重画新显示的区域。取值为: True或False ControlBox是或有控制, 取值为: True 有 False 无 DrawMode设定窗体上绘图(graphics方法),Shape,Line等控件的输出外观,有16种可选: 1 黑色 2 非或笔,设置值15的反相 3 与非笔,背景色以及画笔反相二者共有颜色的组合 4 非复制笔,设置值13的反相 5 与笔非,画笔以及显示色反相二者共有颜色的组合 6 反相,显示颜色反相 7 异或笔,画笔颜色以及显示颜色的异或 8 非与笔,设置值9的反相 9 与笔,画笔以及显示色二者共有颜色的组合 10 非异或笔,设置值7的反相 11 无操作,该设置实际上是不画图 12 或非笔,显示颜色与画笔颜色反相的组合 13 复制笔,用ForeColor属性指定的颜色,此为默认值 14 或笔非,画笔颜色与显示颜色反相的组合 15 或笔,画笔颜色与显示颜色的组合 16 白色 DrawStyle设定绘图相关方法使用的直线样式, 有7种可选: 0 实线,此为默认值 1 虚线 2 点线 3 单点划线 4 双点划线 5 无线 6 内部实线 DrawWidth设定绘图相关方法使用的直线宽度 Enabled是或把鼠标或键盘事件发送到窗体,取值为: True 可用 False 不可用 FillColor填充颜色, 可从弹出的调色板选择。 FillStyle填充样式, 有8种可选: 0 全部填充 1 透明,此为默认值 2 水平直线 3 竖直直线 4 上斜对角线 5 下斜对角线 6 十字线 7 交叉对角线 Font字型,可从弹出的对话选择字体,大小和风格 FontTransparent输出数据是否允许重叠(获得或设置一个值,决定是否显示窗体,打印机或PictureBox上的背景文本/图形)。取值为: True或False ForeColor前景颜色,可从弹出的调色板选择。 HasDC决定是否为该控件分配了唯一的显示上下文。取值为: True或False Height窗体的高度 HelpContextID指定一个对象的缺省帮助文件上下文标识符 Icon为窗体设计图标,该图标位于标题栏的左端 KeyPrevier获得或设置是否在激活对象的上的控件的键盘事件之前,优先激活对象键盘事件。取值为: True或False Left窗体距屏幕左边界的距离 LinkMode获得或设置用于DDE会话的链接类型并激活连接,取值为: 0 None 1 Source LinkTopic获得或设置目标控件的源应用程序和主题 MaxButton窗体右上角最大化按钮是否显示,运行时只读, 取值为: True 显示 False 不显示 MDIChild是否为MDI窗体的子窗体, 取值为: True 为MDI窗体的子窗体 False 否 MinButton窗体右上角最小化按钮是否显示,运行时只读, 取值为: True 显示 False 不显示 MouseIcon MousePointer=99时,设定一个自定义的鼠标图标 MousePointer Moveable是否可以移动窗体, 取值为: True 可以移动 False 不可以移动 NegotiateMenus决定是否将对象的菜单合并到该窗体的菜单栏上。取值为: True或False OLEDropMode 获得或设置该对象是否能作为一个OLE放下目标, 取值为: 0 None(无) 1 Manual(手动) Palette 获得或设置一个图象,包含了当PaletteMode被设置为Custom时用于调色板的对象。 PaletteMode 获得或设置一个值,决定对于对象的控件使用哪个调色板。取值为: 0 Halftone 1 UseZOrder 2 Custom Picture 窗体背景图片 RightToLeft 文本书写是否自左向右。取值为: True False 自右向左 ScaleHeight 自定义坐标系的纵坐标轴的高度 ScaleLeft 自定义坐标系的左边界起点的横坐标 ScaleMode 获得或设置一个值,指示当使用graphics方法或可定位的控件时,自定义坐标系的单位, 有8种可选: 0 自定义 1 表示单位为twip(缇),每英寸=1440缇,每厘米=567缇 2 表示单位为point(磅) ,每英寸=72磅,每磅=20缇 3 表示单位为像素,是监视器或打印机分辨率的最小单位 4 表示单位为字符,每个水平单位为120缇,每个垂直单位为240缇 5 表示单位为in(英寸) 6 表示单位为mm(毫米) 7 表示单位为cm(厘米) ScaleTop 自定义坐标系的上边界起点的纵坐标 ScaleWidth 自定义坐标系的横坐标轴的宽度 ShowInTaskbar 窗体或MDI窗体是否出现在Windows95的任务栏。取值为: True 出现 False 不出现 StartUpPosition 窗体第一次出现的位置, 有4种可选: 0 没有指定初始位置 1 设定在所属项目的中央 2 设置在屏幕的中央 3 设置在屏幕的左上角 Tag 存储程序所需的附加数据 Top 窗体距屏幕顶部边界的距离 Visible 窗体是否可见, 取值为: True 该对象可见 False 该对象不可见 WhatsThisButton 获得或设置是否在一个窗体或MDI窗体的标题上显示"这是什么"按钮。取值为: True或False WhatsThisHelp 获得或设置是否在上下文相关帮助中, 使用Windows95帮助或主帮助窗口提供的"这是什么"弹出菜单。取值为: True或False Width 窗体的宽度 WindowStart 获得或设置一个窗体窗口运行时的可见状态, 取值为: 0 窗体正常状态 1 窗体最小状态 2 窗体最大状态
ZedGraph控件属性设置 ZedGraph是一个非常优秀的开源的作图控件 ZedGraph来源:http://sourceforge.net/project/showfiles.php?group_id=114675 ZedGraph相关例子资源:http://zedgraph.org/wiki/index.php?title=Sample_Graphs 1、在vs中使用ZedGraph 2、一些基本概念 几个注意点: 图片的保存路径设置:RenderedImagePath属性中设置,程序对该文件夹应该是有写和修改权限的 图片的输出格式:OutputFormat属性中设置,Png的推荐,比较清晰。 Chart ChartBorder 图表区域的边设置 ChartFill 图表区域的背景填充 Legend 图表的注释标签显示设置项目,一组数据对应一种颜色的注释 IsHStack 当有多个显示项的时候设置Y轴数据是叠加的还是分开的 Xaxis 图表区域的X轴相关信息设置 AxisColor 坐标轴颜色 Cross 坐标的原点,可以设置坐标的偏移程度 CrossAuto 原点自动设置:True的话Cross的设置就无效了。 FontSpec X轴标题字体相关信息 Angle X轴标题字体显示时候的角度,0为水平 90为垂直 Fill X轴标题字体填充信息 ColorOpacity 透明度 IsScaled 设置X轴标题字体显示大小是否根据图的比例放大缩小 RangeMax 填充时候的最大倾斜度(有过渡色,没试过) RangeMin 填充时候的最小倾斜度(有过渡色,没试过) StringAlignment X轴标题字体排列(不清楚,没试过) IsOmitMag 是否显示指数幂(10次方,没试过,似乎与IsUseTenPower有关系) IsPreventLabelOverlap 坐标值显示是否允许重叠,如果False的话,控件会根据坐标值长度自动消除部分坐标值的显示状态 IsShowTitle X轴标题是否显示 IsTicsBetweenLabels 两个坐标值之间是否自动显示分隔标志 IsUseTenPower 是否使用10次幂指数 IsVisible 是否显示X轴 IsZeroLine 当数据为0时候是否显示(在饼状图显示的时候有用) MajorGrid 大跨度的X轴表格虚线线显示信息 DashOff 虚线中孔间距 DashOn 虚线单位长度 MajorTic 大跨度的X轴刻度信息 IsInside 在Chart内部是否显示 IsOutSide 在Chart外部是否显示 IsOpposite

16,473

社区成员

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

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

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