电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> .NET
打造自己的专业图像工具-Visual C++ 2005图像编程系列【三】-.NET教程,C#语言
作者:网友供稿 点击:338
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
 在这个图像处理工具软件中,需要实现的工具栏比较多。我想让每个工具栏都在浮动的时候没有关闭按钮,同时在工具箱toolbar中还可以设置工具栏显示的列数。根据类抽象的原则,我们给所有的工具栏建立一个基类cbasetoolbar,从ctoolbar派生。cbasetoolbar需实现的主要功能有:浮动时去掉关闭按钮和设置工具栏的列数。

       visual studio.net开始,包括visual c++ 2005,去掉了visual c++ 6.0中类向导功能。一些概念上也发生了变化。可以包含多个工程的workspacesolution替代,称为一个解决方案。

       visual c++ 2005添加一个新的类,只需要在解决方案资源管理器中选择相应的工程,右键点击的弹出菜单中选择添加类,就会弹出添加类的向导对话框。如下图:

 

       在出现的类向导对话框中,选择添加mfc类,然后点击添加按钮,最后选择ctoolbar做为基类,派生类名输入cbasetoolbarvisual c++ 2005中的向导功能比visual c++ 6.0更完善,选择功能更丰富了。如果是想在6.0版本中添加ctoolbar的派生类是无法直接选择ctoolbar类的,一般采用的方法是先选择ctoolbarctrl,添加完成后再采用手动修改的方法改为ctoolbar,而现在可以直接选择ctoolbar,省去了很多麻烦。

建立好ctoolbar的派生类,我们看看如何实现设置工具栏列数和去掉关闭按钮。设置列数时我们给类添加一个函数:void setcolumns(int ncolumn);给某个特定的类添加函数需要先从解决方案资源管理器切换到类视图,这里会显示所有的类。在对应的类名上的右键弹出菜单中选择添加函数或者变量:如下图:

       在随后出现添加函数对话框,提供了非常丰富的功能,直接鼠标点击就可以为函数加上virtualstaticinline等关键字。

       设定好函数的返回类型和名称后,就添加参数。参数名框输入第一个参数的名称,然后点击添加按钮这个参数就被添加到右边的参数列表里。同时在下面的函数签名中可以预览函数的形式。是不是感觉功能比以前更丰富,使用更简单。添加完后在cpp文件中加入函数的实现代码:

void cbasetoolbar::setcolumns(int ncolumns)

{

       int ncount = gettoolbarctrl().getbuttoncount();

       for (int i = 0; i < ncount; i++)

       {

              uint nstyle = getbuttonstyle(i);

              bool bwrap = (((i + 1) % ncolumns) == 0);

              if (bwrap)

                     nstyle |= tbbs_wrapped;        //或上tbbs_wrapped风格就是换行

              else

                     nstyle &= ~tbbs_wrapped;

              setbuttonstyle(i, nstyle);

       }

       invalidate();

       getparentframe()->recalclayout();

}

       设置列数的功能完成,接着看如何去掉浮动关闭按钮。如果里曾经用向导建立过基于对话框的程序,那么你注意了在对话框的oninitdialog函数里,有默认生成的将“关于...”菜单项添加到系统菜单中的代码。看出了点什么——其实标题栏上的右键和关闭按钮可以通过系统菜单进行控制。所以我们实现去掉浮点时的参数和关闭按钮也可以从这里开始。首先我们要判断工具栏时浮点还是停靠的,这个可以通过wm_windowposchanged消息得到通知。

       visual c++ 2005给某个类添加消息映射函数,同样在类视图里选择相应的类,然后在右边弹出属性设置界面,如果这个属性设置框没有出现,可以通过工具栏按钮打开界面:

       在属性设置界面中,存在过滤的工具栏,选择第五个的消息事件按钮,下面就列出了此类所有可用的消息,选择对应的消息,在右边的下拉框你添加消息响应函数即可。选择消息的时候最下面还会有消息的一些说明帮助我们理解这个消息。

       wm_windowposchanged消息函数里,我们先判断工具栏是否处于停靠状态,如果是浮动状态就去掉系统菜单。这里需要注意的时,虽然在界面上看工具栏时浮动非停靠的,实际上工具栏是停靠在一个cminiframewnd框架里。我们这里所指的系统菜单就是这个cminiframewnd的系统菜单。

void cbasetoolbar::onwindowposchanged(windowpos far* lpwndpos)

{

       ctoolbar::onwindowposchanged(lpwndpos);

       if(isfloating())

       {

              if(m_pdockbar)     // m_pdockbar指向停靠的窗口对象

              {

                     //如果停靠窗口是 cminiframewnd就去掉系统菜单

                     //isfloating函数为false的时候这个m_pdockba的父窗口就是主框架

                     cwnd* pparent = m_pdockbar->getparent();

                     if( pparent->iskindof(runtime_class(cminiframewnd)))

                            pparent->modifystyle(ws_sysmenu, 0, 0 );

              }

       }

}

        现在我们实现这2个基本的功能。在介绍的过程中,我特别的加入了一些图片,希望给那些对visual c++ 2005不熟悉的朋友提供一些帮助。在后续的介绍中就不会再做介绍了。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·经典收藏之 - C++内存管理详解-.NET教程,C#语言
·Master Page 初探-.NET教程,评论及其它
·GDI+编程10个基本技巧-.NET教程,评论及其它
·VB.NET中让Textbox只能输入数字(二)-.NET教程,VB.Net语言
·stl应用小问题-.NET教程,评论及其它
·WIN32中颜色值(COLORREF)与.NET中颜色值(Color)的转换-ASP教程,系统相关
·打造自己的专业图像工具-Visual C++ 2005图像编程系列【三】-.NET教程,C#语言
·.Net中常见问题及解决方法归类-.NET教程,.NET Framework
·Lex和Yacc从入门到精通(3)--一个极其简单的lex和yacc程序-.NET教程,评论及其它
·VB下几个非常有用的函数-.NET教程,VB.Net语言

最新文章
·VC#初学入门:第一个Windows程序
·ASP.NET 2.0-选用DataSet或DataReader
·用.net 处理xmlHttp发送异步请求
·asp.net创建文件夹的IO类的问题
·asp.net 2.0 中加密web.config 文件中的配置节
·关于ASP.NET调用JavaScript的实现
·如何实现ASP.NET网站个性化
·Acegi安全系统的配置-.NET教程,评论及其它
·Spring安全系统:Acegi Security Acegi简介-.NET教程,评论及其它
·Biztalk 开发之 架构和实例的验证-.NET教程,评论及其它


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号