天圆液压产品中心
[文章]MFC与ARX团液压站结开拓美满的AutoCAD应用措施(2)
| 界说_WINDLL和_AFXDLL } 在执行任何导致MFC查找你的资源的步调时挪用函数AfxSetResourceHandle()将自界说资源设为体系缺省值。 自Windows推出后,AutoCAD开拓者们一向都在全力寻求一种要领使其应用措施既具有Windows的友爱界面又不失其成果,但老是不尽人意,ARX的推出使开拓者多年的愿望成为也许。针对以上的题目,本文将对如安在ARX应用措施中行使MFC的各个方面作一细致接头,并给出实现MFC与ARX应用团结开拓出美满的AutoCAD应用措施的要领(本文接头基于AutoCAD R14,ObjectARX 2.0举办)。 pCirc->close(); 移走任何CwinApp类的派生工具在这里应用对话框类为HelloDlg,它由Cdialog类派生。当将这一进口插手到动静映射中时必需为该动静写一句柄函数。假定我们已写了一函数keepFocus(),它在对话框想保持聚焦时返回TRUE,反之返回FALSE则动静句柄函数应为: pBlockTableRecord->appendAcDbEntity(circleId, pCirc); 在执行完任何要求行使自界说资源的函数之后,立即将体系资源还原为早年世存的资源句柄。extern "C" AcRx::AppRetCode acrxEntryPoint( AcRx::AppMsgCode msg, void* ) createCircle();//画圆 开拓者只需按前面所述的要领举办配置则以上事变均无需开拓者参与,液压油缸,开拓者只需插手响应的用户函数即可。 四.竣事语 ON_COMMAND( IDCLOSE, OnClose ) pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, { } hin_new=acedGetAcadResourceInstance(); file://得到ACAD的资源 } AcDbObjectId createCircle() 移走现有的ARX-MFC摸板把arxmfcdll.cpp和resourcehelper.h插手项目,并作响应调解 (这两个文件都在ObjectARX SDK目次 \objectarx\utils\mfcextras内) 在一ARX应用中回收动态链接的MFC库照旧静态链接的MFC库很洪流平上是由应用措施机能与特另外AutoCAD开拓中差异版本的和谐间的比抉择的。开拓者应抉择是动态链接所带来的机能良好更重要照旧和谐某一版本编译器与当前版本AutoCAD所回收的编译器的同等性更重要。以动态链接的MFC库情势成立的ARX应用与AutoCAD共享统一MFC动态链接库,因此该应用比回收静态链接的MFC库情势成立的应用更小、运行服从更高。然而它却具有:①.所用的开拓编译器必需与用来构建AutoCAD的编译器版内情同 ②.最新版本的开拓编译器也许无法行使 ③.在新刊行的AutoCAD版本中以早期版本成立的ARX应用也许无法事变等弱点。 AcDbCircle *pCirc = new AcDbCircle(center, normal, 2.0); 因AutoCAD老是试图不使体系聚焦于其子窗口,故无模式对话框该当发出一哀求。在一通例间歇内,无模式对话框将收到WM_ACAD_KEEPFOCUS窗口动静(在adscodes.h中界说为1001)。当对话框吸取到此动静时,如其想保持聚焦则应返回TRUE,不然返回FALSE(缺省值),此时鼠标一分开对话框体系就不再聚焦于对话框。在对话框的动静映射中ON_MESSAGE()函数如下:DllMain(_hdllInstance, DLL_PROCESS_ATTACH, NULL); AcDbBlockTableRecord *pBlockTableRecord; break; ON_COMMAND( IDC_DRAW_CIRCLE, OnDrawCircle ) DllMain(_hdllInstance, DLL_PROCESS_DETACH, NULL); void CDiaTest::OnOK() 移走现有的DLL MFC初始化代码3.资源打点 MFC ARX 动态链接 静态链接 假设此刻要在一对话框中按下“OK”按钮后绘制一圆,则操作MFC的ARX应用实现为先操作ClassWizard插手工具ID为ON_OK的动静映射,然后编辑代码 行使“multithreaded DLL runtime library”(宣布版)在将体系资源设为你的应用资源早年,挪用AfxGetResourceHandle()函数得到体系当前资源。 return circleId; AcDb::kForRead); 在ARX应用与AutoCAD和其余应用措施行使共享的MFC库时,资源打点变得极为重要。你必需清楚得打点好你的应用措施资源,防备它与AutoCAD或其余ARX应用措施的资源产生斗嘴。清楚地资源配置一样平常包罗以下三步: case AcRx::kInitAppMsg: 起首在项目选项中选“MFC AppWizard(DLL)”,然后选Regular DLL using shared MFC DLL,然后输入项目名三.ARX应用于动态链接的MFC库 pBlockTableRecord->close(); acdbCurDwg()->getBlockTable(pBlockTable, 以下我们将分五部门对在ARX中行使动态链接的MFC库举办接头 一.弁言 在应用措施对话框呼吁句柄需挪用要求得到AutoCAD资源的AutoCAD API函数(或挪用AutoCAD呼吁)时,我们该当起首在挪用函数前将资源设为AutoCAD,然后函数执行完后再规复应用措施资源(acedGetAcadResourceInstance()函数可得到AutoCAD的资源句柄)。为使资源打点更简朴我们行使了一个C++类CtemporaryResourceOverride(objectarx\utils\mfcextras目次下可找到),在该类的一个工具成立时,工具将体系资源设为你的应用资源,工具删除时,析构函数自动将资源设为体系资源。CtemporaryResourceOverride声明请查阅objectarx\utils\mfcextras目次下的afxmfcdll.cpp文件。因为静态链接的MFC库情势成立的ARX应用把MFC库也加载到了每一静态链接的ARX应用中,故上述题目对此类ARX应用不存在但此类应用却有:①.更大的内存要求②.运行速率慢(因所需的互换空间更大)等弱点。因此开拓者应衡量利弊再作弃取(本文仅接头动态链接的环境,静态链接与动态链接极为相似,读者可参考响应的开拓文档)。 jxs=new CTemporaryResourceOverride(hin_new) ;//为jxs分派内存,并初始化 BEGIN_MESSAGE_MAP( HelloDlg, CDialog ) 在C/C++标签项中,“Code Generation”栏“Use Run-time library”项选“Multithread DLL”作者在正举办的模具CAD体系的开拓中行使了ARX与MFC团结编程的要领,实践证明一方面操作MFC举办Windows气魄威风凛凛的编程,另一方面操作ARX提供的类和函数深入到AutoCAD体系内部,实现体系成果要求,大大的进步了开拓服从,无疑这是AutoCAD开拓者们的最佳选择。
CTemporaryResourceOverride *jxs; file://界说新工具 AcDb::kForWrite); HINSTANCE hin_new; { delete jxs;//删除工具 case AcRx::UnloadAppMsg: 在C/C++标签项中,“Preprocessor”栏中界说_WINDLL,_AFXDLL(责任编辑:admin) |
- [ 18-11-06 ]换向阀中位性液压站能特点及应用留意
- [ 18-10-09 ]公制螺纹、BS液压油缸PP螺纹ED密封油
- [ 18-09-11 ]很是具体的液液压站压阀块计划履历总
- [ 18-09-11 ]液压节液压站制技能的革命
- [ 16-09-14 ]联轴珩磨管器选择方法
- [ 16-07-17 ]怎样避免缸筒液压站冲击危害?
- [ 16-07-17 ]液压动力单元液不锈钢缸筒压齿轮泵的
