明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1525|回复: 8

关于AcDialogBar的问题,高手来讨论讨论吧

[复制链接]
发表于 2005-3-27 15:33:00 | 显示全部楼层 |阅读模式
如果在ARX中直接利用AcDialogBar,可以在CAD窗口中显示;但是
用Dialogbar做成了一个动态链接库DLL,在另外的arx程序中想调用这个Dialogbar,显示在cad窗口中,但是却不能成功,造成CAD崩溃,为什么?
同样的Dialogbar dll,却可以在EXE程序中成功调用,想知道为什么
为什么生成一个DialogBar做成动态链接库供ARX调用就不行了呢?
 楼主| 发表于 2005-3-27 17:55:00 | 显示全部楼层
原因找到:arx调用DLL,显示对话框,只能在release版本中才能实现


但具体为什么,还不知道,哪位高手能指点指点
发表于 2005-3-28 12:03:00 | 显示全部楼层
Microsoft DLL本身的设计问题, 调用DLL一定要分debug和release版本, 并且两个DLL版本还要匹配, 还因为AutoCAD本身是release build, 所以为其设计的DLL都要匹配为release build, 不然不保证运行..
 楼主| 发表于 2005-3-28 16:47:00 | 显示全部楼层
但是,编的ARX用debug版的却可以的啊


而且,如果只能用release的话,那岂不是不能调试了???


怪栽
发表于 2005-3-28 18:24:00 | 显示全部楼层
是不保证运行, 不是一定不运行.


debug/release build的区别主要在一些macro的使用和变量内存处理上. 简单编的ARX如果不引用其他MFC AppWizard DLL, 不会包含什么和debug/release有关的macro, 等于说是debug/release build并没有什么区别, 但是用它引用其他DLL的时候另外的DLL里就可能包含和build有关的东西, 就可能会造成冲突.


两个build通常只是preprocessor definition里面不同而已, 一般偶都是把要调试的函数单独copy出来一份做成debug build, 这样一般都能跳过那些乱七八糟的macro. 具体的调试技巧其实都是随个人喜好, 你可以google看.
 楼主| 发表于 2005-3-28 20:50:00 | 显示全部楼层
多谢各位的指导



欧今天又试了将DockBar做成像ms.net那样拉帘式的,就是说,可以自动缩回去的


利用了三个定时器,可惜,在CAD中不成功,不知道各位有没有试过


同样的效果,在EXE中可以实现,也许是CAD的消息,我没有处理还是别的原因?


希望各位大大多多帮忙,完成后,我会发上来供大家学习的。
发表于 2005-3-29 14:52:00 | 显示全部楼层
EXE是独立进程, 要记得你在运行ARX的时候CAD才是你的EXE, 而不是ARX -- 因为ARX只是CAD的DLL. MFC EXE和它的子窗口之间的交流是MFC自动处理的, 但是ARX没有这些自动处理, 所以很多窗口/UI功能都要尽量在ARX呼叫的子窗口本身实现, 避免留给CAD.


不知道你具体想做成什么样的, AcUiDialogBar是CAD内用的类, 并不是一个很开放来给大家用的类, 所以相对的这个类的可实现控制就很少. 虽然不很确定你用三个定时器的是dock bar还是dialog bar, 但是MFC实际上提供获得当前鼠标信息的message, 所以只要不停地获得当前鼠标位置然后根据其所在区域调整dock bar的显示就可以了, 应该无须定时器这么重大.
 楼主| 发表于 2005-3-29 15:46:00 | 显示全部楼层
谢谢你的忠告。


不知道你有没有这方面的代码参考参考?
发表于 2005-3-30 11:06:00 | 显示全部楼层
代码偶是没有, 不过你可以去一个叫CodeProject的地方看一个叫MousePos的东西..


去MSDN查一下GetCursorPos这个函数..偶想了一下, 大致的思路就是按dock bar的大小位置定义一个屏幕方块, 然后窗口在处理WM_MOUSEMOVE时候GetCursurPos, 然后根据其返回数据判定鼠标是否在定义方块内..dock bar的显示/隐藏应该有定义好的函数可用..


不过偶是想想而已, 现在没有那么多时间试着真的做这些东西出来..在这些功能上面还是Delphi好用, 直接一个OnMouse函数就什么都解决了..
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 07:25 , Processed in 0.179434 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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