首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 虚拟主机评测对比
打造自己的专业图像工具-Visual C++ 2005图像编程系列【三】-.NET教程,C#语言
作者:网友供稿 点击:233
推荐
西部数码-全国虚拟主机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.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·Asp.Net下导出/导入规则的Excel(.xls)文件-ASP教程,ASP应用
·中国万网,万网
·中资源
·上海火速
·加拿大中文网
·华夏名网
·世纪东方
·商务中国
·中国E动网
·神话网络
最新文章
·photoshop抠图合成特效:飞出照片相框_photoshop教程
·将升级的windows vista驱动还原到原来的版本_windows vista
·photoshop漫画笔刷绘制非主流照片漫画_photoshop教程
·看域名注册信息判断网赚公司真假_网赚技巧
·找坐标:对网站进行坐标定位_站长心得
·如何增加网站pv_站长心得
·google性格一:对活跃度高的网页收录很快_google推广
·googleadsense容易被k的可能性列表_google推广
·价值数万的googlepr作弊方_google推广
·如何抢占人家的“首要意念”_google推广
相关主题
  • 打造自己的江民kv2007杀毒光盘_病毒防治教程
  • 打造自己的teamspeak语音聊天平台_媒体工具教程
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭