8.VC(ui)-自绘对话框基类
来源:互联网 发布:js slice不传参数 编辑:程序博客网 时间:2024/06/11 20:53
所有的对话框都是基于CDialog的,也就都具有CDialog的特征,本文以CDialog为基类派生一个新的类CSkinDialogBase,只需将基于CDialog的对话框中CDialog替换成CSkinDialogBase,则可具有自绘DLG的特征.
下面例子是自己重绘了非客户区及客户区底色完成的一个圆角Dialog的基类,直接上图:
实现步骤:
1.派生自CDialog的类CSkinDialogBase,这时系统会自动生成一个DLG资源,把enum { IDD = ...};删除掉,重载CSkinDialogBase的构造函数:
记得把原来默认的构造函数删除掉
2.在OnNcCalcSize中定义非客户区边框的size,这里用到的绘制边框的图片都是6*5的,所以设置如下:
3.在OnNcHitTest中设置CAPTION的size,将客户区一部分映射为非客户区,以便拖动。
4.将客户区颜色刷为和非客户区绘制一样的颜色,这里为RGB(240,240,240),有两种实现方式,在OnEraseBkgnd中和在OnCtlColor均可实现
或
5.绘制非客户区,这里必须用CWindowDC来绘制
至此,完成,调用方法很简单:对任意以CDialog为基类的对话框,将CDialog用CSkinDialogBase替换,即可变成上图所示的对话框形状(请将边框设为none)。
本人小菜,随手写的,很多不周,请多指点,3Q。
===》示例源代码下载
- 8.VC(ui)-自绘对话框基类
- 【VC界面设计】漂亮对话框自绘
- 16.VC(ui)-CEdit自绘点
- 1.VC(ui)-单选按钮的自绘实现
- 2.VC(ui)-MFC控件自绘属性的总结
- 3.VC(ui)-clistbox 和button的自绘
- 7.VC(ui)-无边框/有边框菜单自绘
- 0.VC(ui)-hook menu实现自绘
- 自绘对话框标题栏
- 自绘对话框标题栏
- 自绘对话框标题栏
- 自绘对话框标题栏
- 自绘对话框标题栏
- 自绘对话框-界面设计
- vc 按钮自绘
- VC++自绘界面
- VC控件自绘
- VC自绘按钮
- 一个正则表达式:该正则表达式标示了后面有数字,但又不能是某特定数字的情况
- 从Project Euler中我们学到了什么?
- delphi 中 Label 中文显示不全的问题解决办法
- Linux下编程使用的编译器选择
- 栈-顺序结构C++实现
- 8.VC(ui)-自绘对话框基类
- PHP的伪重载
- 依葫画瓢:自定义liferay的日期控件
- RCP
- 对代理模式与java动态代理类的理解(转)
- Windows Phone 7 资源汇总(超全)
- RCP
- RCP
- 安全,任重道远