找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 10333|回复: 63

[原创]:一个对CAcUiDockControlBar进行定制的完整示例

[复制链接]
发表于 2004-8-12 16:44:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
主要特点:
1、按照自定义布局重新计算内部可用矩形
2、按照要求重新定位关闭按钮
3、自绘制控件的把手(3道竖线)
4、跟踪鼠标事件以动态改变背景色
TODO:
1、通过动态子类化技术控制关闭按钮的外观
2、结合跟踪鼠标事件和区域判别,进一步控制控件条外观

源码见附件。不好意思,本来再可以在附上两张图片,只可惜论坛上看像一次只能带一个附件,算了下载后自己看吧,有什么bug联系我: lab_zj@163.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-12 16:52:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
第一个下载!
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-12 16:54:42 | 显示全部楼层
哇!好东西!向你致敬!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-13 00:07:23 | 显示全部楼层
下载不了,钱不够
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-13 08:02:12 | 显示全部楼层
谢谢了,是三把手的,不错
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-13 08:38:29 | 显示全部楼层
问几个问题:
1、能否不显示关闭按钮?
2、能否不显示动态分隔条?
3、当浮动状态时,能否不显示标题栏?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-13 08:45:21 | 显示全部楼层
最初由 lzxlzx 发布
[B]问几个问题:
1、能否不显示关闭按钮?
2、能否不显示动态分隔条?
3、当浮动状态时,能否不显示标题栏? [/B]


1、可以。在RepositionBtn函数中有已获取的关闭按钮的指针,调用: pBtn->ShowWindow(SW_HIDE);就可以隐藏关闭它。
2、好像不行,没见到相关函数。
3、可以。在控件条浮动时:
CMiniFrameWnd *pFrm=(CMiniFrameWnd *)GetDockingFrame();
BOOL bCanHide=pFrm->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd));
LONG style=::GetWindowLong(pFrm->m_hWnd,GWL_STYLE);
if(bCanHide)
{
   ::SetWindowLong(pFrm->m_hWnd,  GWL_STYLE,IsFloating() ? (style & ~WS_CAPTION) : (style | WS_CAPTION));
}
注意:若使标题条隐藏了,则在GetInsizeRect和PaintControlBar以及RepositionBtn三个函数中,应将浮动状态改为按照垂直停靠状态对待,并且记着在PaintControlBar中显示隐藏的关闭按钮(缺省,在浮动时隐藏关闭按钮)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2004-8-14 10:37:04 | 显示全部楼层
代码值得学习,精神更值得学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-14 16:39:55 | 显示全部楼层
谢谢,我一直在找相关的内容。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-18 17:26:57 | 显示全部楼层
Hellow  请教一下
1.怎么控制它边框的宽度 ,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-18 22:07:20 | 显示全部楼层
指那个边框:
1、控件条的外边界尺寸:
   不知为什么,此控件条在CAD中不允许动态缩放(浮动时),所以只能在创建时或创建好后的首次浮动时重设它的大小:
   acedGetAcadFrame()->FloatControlBar(pBar,...);
      acedGetAcadFrame()->ShowConttrolBar(pBar,...);
      pBar->InitFloatingPosition(...);//在这里设
2、若是指控件提供的内部可用边界尺寸,修改GetInsideRect函数等以改变布局.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-27 16:08:41 | 显示全部楼层
太棒了,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-28 11:16:14 | 显示全部楼层
最初由 Hellow 发布
[B]指那个边框:
1、控件条的外边界尺寸:
   不知为什么,此控件条在CAD中不允许动态缩放(浮动时),所以只能在创建时或创建好后的首次浮动时重设它的大小:
   acedGetAcadFrame()->FloatControlBar(pBar,...);
... [/B]


RestoreControlBar(AFX_IDW_DOCKBAR_LEFT ,  lpRect);
可以重新设定窗口大小, 但是浮动的时候,直接导致AutoCAD崩溃(有几次改变竟然还不崩溃),不知道是不是我使用错误。

我本来要说的是停靠窗口的边框宽度是指图示的宽度,
        SetBarStyle(   );
        SetBorders( );
ModifyStyleEx(); ModifyStyle() 都试过,那个边框就是还存在
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-28 14:21:00 | 显示全部楼层
停靠窗口的边框是一个分隔条(splitter),CAcUiDockControlBar自带的,要删除它好像很难。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-8 14:14:32 | 显示全部楼层
aaaaaaa
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-21 23:27 , Processed in 0.420172 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表