注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 微软开发专栏 > VC.NET 内容正文:Visual C++ 2005图像编程之属性设置栏

Visual C++ 2005图像编程之属性设置栏

发布时间:2006-07-13 12:11:13 来源:blog 网友评论 0 条
  工具箱含有选择、填充、画线等功能。使用这些工具时有的需要设置填充风格和线条的大小。为了方便用户操作,实现更简易的UI,实现了属性工具栏。属性栏需要添加的主要功能有2个显示文字的静态文本框和2个组合框。

  添加属性栏控件,需要先通过资源编辑器在相应的位置上建立四个对应的工具栏按钮,对于没有接触过Visual C++ 2005的朋友可能会找不到按钮的属性编辑器。在Visual C++ 6.0中是回车(右键)弹出对话框设置的。默认情况下,在工具栏右边可以打开属性设置对话框。注意下图中红色数字的位置就是我们创建静态文本框和组合框的位置。


图2-1

  利用前面讲述的方法建立一个CBaseToolBar的派生类CToolBoxPropBar。建立这个派生类的时候,如果选择MFC类型,将不能直接选择基类为CBaseToolBar,可以选择CToolBar然后手动修改。也可以直接选择C++类型,不选择MFC,这样就可以由我们指定任何的类名称。

  在CToolBoxPropBar类的头文件增加四个成员变量表示四个控件。在一些书籍和文章中介绍的方法是将控件变量添加到CMainFrame中,然后在CMainFrame::OnCreate()函数里创建这些控件,这样的方法虽然可行,但是在实际的项目中,会造成CMainFrame过于庞大和臃肿,不方便管理。所以我们这里通过CToolBoxPropBar等类分离了这些控件的创建过程。然后给CToolBoxPropBar类添加一个子控件创建函数void CreateSubControl();添加后工具栏的头文件:

class CToolBoxPropBar
{
 ………………//省略部分代码
 CStatic m_Static;
 CStatic m_Static2;
 CComboBox m_BrushStyle;
 CComboBox m_BrushSize;
 void CreateSubControl();
};

  也许你会想把创建控件的代码放入CToolBoxPropBar类的OnCreate函数里。不行!因为我们创建控件的时候需要访问CToolBoxPropBar对象,如果直接在OnCreate函数里访问,就表示这个控件还没有创建成功,访问将失败。所以我们需要单独的执行函数。而且调用这个函数必须在CToolBoxPropBar创建成功后。

void CToolBoxPropBar:: CreateSubControl ()
{
 HGDIOBJ hFont = GetStockObject( DEFAULT_GUI_FONT ); //取默认GUI字体
 CFont font;
 font.Attach( hFont );
 //将IDC_1(图2-1中数字1按钮的ID)按钮设置为分隔条
 int nIndex = GetToolBarCtrl().CommandToIndex(IDC_1);
 SetButtonInfo(nIndex, IDC_1, TBBS_SEPARATOR, 60); //60表示控件的宽度
 RECT rect;
 GetItemRect(nIndex, &rect);
 m_Static.Create(_T("填充风格:"), WS_CHILD|WS_VISIBLE, rect, this, IDC_STATIC);
 m_Static.SetFont(&font);

 nIndex = GetToolBarCtrl().CommandToIndex(IDC_2);
 SetButtonInfo(nIndex, IDC_2, TBBS_SEPARATOR, 100);
 GetItemRect(nIndex, &rect);
 m_BrushStyle.Create("", WS_CHILD|WS_VISIBLE, rect, this, ID_COMBOBOX_STYEL);

 nIndex = GetToolBarCtrl().CommandToIndex(IDC_3);
 SetButtonInfo(nIndex, IDC_3, TBBS_SEPARATOR, 60);
 GetItemRect(nIndex, &rect);
 m_Static2.Create(_T("画刷大小:"), WS_CHILD|WS_VISIBLE|, rect, this, IDC_3);
 m_Static2.SetFont(&font);

 nIndex = GetToolBarCtrl().CommandToIndex(IDC_4);
 SetButtonInfo(nIndex, IDC_4, TBBS_SEPARATOR, 50);
 GetItemRect(nIndex, &rect);
 m_BrushSize.Create("", WS_CHILD|WS_VISIBLE, rect, this, ID_COMBOBOX_WIDTH);
 m_BrushSize.SetFont(&font);
}

  最后调用过程非常简单,在CMainFrame类里和创建普通工具栏一样,在OnCreate函数里创建CToolBoxPropBar工具栏,只需要在工具栏Create之后调用CreateSubControl即可。
相关文章
  • Visual C++ 2005图像编程之工具栏
  • Visual C++ 2005图像编程之预备知识
  • Visual C++ 2005中的突破性变化
【评论】【收藏本文】【打印】【关闭】
上一篇文章:Visual C++ 2005图像编程之工具栏
下一篇文章:VC#2005快速入门之使用while语句
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
用VC获取其它程序的命令行参数
用VC获取其它程序的命令行参数
用Visual C++设计QQ群管理工具
用Visual C++设计QQ群管理工具
推荐阅讯
  • Visual C# 2005快速入门之编写方法
  • VC++实现Windows回收站的文件存取
  • 使用VC6.0实现窗口的任意分割
  • VC利用boost库解析正则表达式
  • 用VC获取其它程序的命令行参数
  • Visual C++2003中DLL初学者指南
  • Visual C#命名空间详解
  • 漫谈Visual C#的组件设计方法
  • Visual C# 2.0泛型编程基础
  • 深入浅出VC++串口编程之基于Win32 API
阅读排行
  • 1.VC++编程实现广告窗口自动关闭
  • 2.深入浅出VC++串口编程之基于控件
  • 3.解读VC++编程中的文件操作API和CFile类
  • 4.利用Visual C#实现ICMP网络协议
  • 5.深入浅出VC++串口编程之第三方类
  • 6.掀起你的盖头来——谈VC++对象模型
  • 7.Visual C#中用WMI控制远程计算机
  • 8.深入浅出VC++串口编程之基于Win32 API
  • 9.Visual C++2005中开发自定义绘图控件
  • 10.深入浅出VC++串口编程之基本概念
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载