几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-04-18, 10:10 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 请高手出招!cacuidockcontrolbar问题!

请高手出招!cacuidockcontrolbar问题!
请高手出招!cacuidockcontrolbar问题!
用cacuidockcontrolbar向cad中加入自己的controlbar出现问题,请各位高手急救!
我创建了一个基于cacuidockcontrolbar的类,在类中创建自己的控件。加载到cad后,让其自己停靠,但是停靠后的工具条高度无法所到。另外加载后cad出现不停闪烁现象,请高手出招!
class clayerdockcontrolbar : public cacuidockcontrolbar
{
declare_dynamic(clayerdockcontrolbar)
public:
clayerdockcontrolbar();

public:
virtual bool create(cwnd* pparent, lpcstr lpsztitle);

protected:
afx_msg int oncreate (lpcreatestruct lpcreatestruct);
afx_msg void onsize(uint ntype, int cx, int cy);
declare_message_map()

virtual void sizechanged(crect *lprect, bool bfloating, int flags);
public:
clayermanagebar *m_pwndlayerbar;
};
implement_dynamic(clayerdockcontrolbar, cacuidockcontrolbar)
begin_message_map(clayerdockcontrolbar, cacuidockcontrolbar)
//{{afx_msg_map(clayerdockcontrolbar)
on_wm_create()
on_wm_size()
//}}afx_msg_map
end_message_map()
static clsid clsclayerdockcontrolbar ={ 0x45d8e5de, 0xaa69, 0x4611, { 0x8f, 0xeb, 0xb2, 0xa6, 0xbe, 0xe8, 0xfb, 0x47 } } ;
clayerdockcontrolbar::clayerdockcontrolbar()
: cacuidockcontrolbar()
{
m_pwndlayerbar = null;
}
bool clayerdockcontrolbar::create(cwnd* pparent, lpcstr lpsztitle)
{
cstring strwndclass;
strwndclass = afxregisterwndclass (cs_dblclks, loadcursor (null, idc_arrow));
crect rect (0, 0, 158, 300);
if ( !cacuidockcontrolbar::create(
strwndclass,
lpsztitle,
ws_visible | ws_child | ws_clipchildren,
rect,
pparent, idc_toolbar_layermanager
))
return (false);
settoolid (&clsclayerdockcontrolbar) ;
return (true);
}
int clayerdockcontrolbar:ncreate (lpcreatestruct lpcreatestruct)
{
if ( cacuidockcontrolbar:ncreate (lpcreatestruct) == -1 )
return (-1);

cacmoduleresourceoverride resourceoverride;
m_pwndlayerbar = new clayermanagebar;
if (!m_pwndlayerbar->create(_t("layer manager"), this, csize(,300),true,123))
{
return -1;
}
m_pwndlayerbar->setbarstyle(m_pwndlayerbar->getbarstyle() |
cbrs_tooltips | cbrs_flyby | cbrs_size_dynamic);

m_pwndlayerbar->addview(runtime_class(cwndsliderview));
((cwndsliderview *)m_pwndlayerbar->getactiveview())->createview("0 layview", runtime_class(clayermanagerview), null);
((cwndsliderview *)m_pwndlayerbar->getactiveview())->createview("1 layview", runtime_class(clayermanagerview), null);
return (0);
}
void clayerdockcontrolbar:nsize(uint ntype, int cx, int cy)
{
cacuidockcontrolbar:nsize(ntype, cx, cy);
if(m_pwndlayerbar)
{
if(!isfloating())
m_pwndlayerbar->movewindow(0, 20, cx, cy-20);
}
}
void clayerdockcontrolbar::sizechanged(crect *lprect, bool bfloating, int flags)
{
cacmoduleresourceoverride resourceoverride;
if (m_pwndlayerbar != null)
{
m_pwndlayerbar->movewindow(0,20,lprect->right, lprect->bottom-20);
}
}
以下为调用部份。
static clayerdockcontrolbar *dockbar = null;
void layermanager()
{
cacmoduleresourceoverride res;

if (dockbar == null)
{
dockbar = new clayerdockcontrolbar;
dockbar->create(acedgetacadframe(), "mydockbar");
dockbar->setwindowtext( _t("hello"));
}
dockbar->enabledocking(cbrs_align_any);
acedgetacadframe()->enabledocking(cbrs_align_any);
acedgetacadframe()->dockcontrolbar(dockbar, afx_idw_dockbar_left);
acedgetacadframe()->showcontrolbar(dockbar, true, true);
setactivewindow(acedgetacadframe()->m_hwnd);
}
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 01:52 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多