objectarx与mfc的结合
来源:互联网 发布:定时提醒休息软件 编辑:程序博客网 时间:2024/05/02 01:37
1、新建项目->arx项目,名称为MFClab,点击左边MFC Support,选择Extension DLL using MFC shared DLL (recommended for MFC support),再点Finish;
2、上步完成后解决方案应该可以看到acrxEntryPoint.cpp,DocData.cpp,MFClab.cpp,StdAfx.cpp,DocData.h,Resource.h,StdAfx.h这几个文件有MFC.rc;
3、双点acrxEntryPoint.cpp打开,点arx工具条上的"a>",出现ObjectARX Commands对话框,在ARX command list:列表中点右键,在右键中点New,则命令列表中多出了一行,将Localized Name里的MyCommand1改成你的命令名,这个命令名即是你以后在cad中输入的命令名,然后点OK;
4、加入对话框资源。点项目—>添加资源,在添加资源对话框中选Dialog,然后点新建,对话框资源就加入到了项目中。双点对话框蓝色的部份,出现MFC类向导对话框,在类名中输入类名Dialog1,基类选CDialog,其它的按默认值,点击完成,回到C++主界面;
5、在解决方案资源管理器中双点Dialog1.cpp(与第4步输入的对话框名相同)打开它,点菜单编辑->查找替换,查找内容为“CDialog”退第4步中的基类名,替换为"CAcUiDialog",注意这里的大小写,点全部替换;
6、打开Dialog1.h(与第4步输入的对话框名相同),按第5步的方法将"CDialog"替换为"CAcUiDialog",在文件的开头加上这几行#include "resource.h"
#include <dbsymtb.h>
#include <dbapserv.h>
#include <adslib.h>
#include <adui.h>
#include <acui.h>
7、在解决方案资源管理器中双点Dialog1.cpp(与第4步输入的对话框名相同)打开它,在文件头部有一行#include "arxMFClab.h"(与C++主窗口左上角的工程名相同),将这行删除,加上一行#include "resource.h";
8、在解决方案资源管理器中双点acrxEntryPoint.cpp打开它,在文件顶上加上一行#include "Dialog1.h"(与第4步中的对话框名同名),在virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
............
//这里加上下边一行
CAcModuleResourceOverride resOverride;
return (retCode) ;
}
///在ARX程序应用中,经常需要同时加载多个ARX文件,如果多个文件都含有对话框,可能就会导致某些程序无法运行,这是非常常见的问题。
为了防止这种问题,可以在该应用程序的与工程同名的源文件中包含头文件“#include "AcExtensionModule.h"”,然后在加载对话框的函数中添加语句“CAcModuleResourceOverride resOverride;”,就可以解决这个问题
源文档 <http://www.365jt.com/html/CADSOFT/0121130706976.html>
9、编译应该没有错误;
,在你自已的命令函数里加上下边两行
static void arxMFClab_MyCommand1(void)
{
// Add your code for command arxMFClab._MyCommand1 here
Dialog1 dlg(CWnd::FromHandle(adsw_acadMainWnd()));
///CWnd::FromHandle的解释是:
Returns a pointer to a CWnd object when given a handle to a window.
If a CWnd object is not attached to the handle, a temporary CWnd object
is created and attached.当为窗口定义句柄时返回一个指针给CWnd对象.如果CWnd对象没有附着句柄,
则临时CWnd对象被创建.
CWnd::FromHandle(adsw_acadMainWnd())只是明确指出了所创建的Dialog的父窗体是
AutoCAD Main Frame?
源文档 <http://bbs.mjtd.com/dispbbs.asp?BoardID=14&id=31356>
int nReturnValue = dlg.DoModal();
}
源文档 <http://bbs.mjtd.com/dispbbs.asp?boardID=14&ID=68938&page=10>
- objectarx与mfc的结合
- DuiLib 与 MFC的结合
- ogre与mfc结合
- MFC与DX11结合
- Ogre与MFC结合时的内存泄漏问题
- Ogre与MFC结合时的内存泄漏问题
- OGRE与MFC结合产生的内存泄露问题
- MFC消息机制与虚函数的结合
- Ogre与MFC结合时的内存泄漏问题
- MFC与opencv的结合:在MFC界面上显示opencv处理的效果图
- VC6.0中ObjectARX应用程序的加载与运行
- 将MFC与DirectX9结合使用
- HGE与MFC结合-视频播放
- Opengl与MFC结合显示图像
- ObjectARX的基础
- ObjectARx相关内容的介绍
- ObjectARX
- 经典与现代的结合:在MFC中集成RAD .NET框架
- 这段程序能停止吗?
- 开始复习,心里特别没谱~
- Kimball University: The 10 Essential Rules of Dimensional Modeling
- 你的成功在于你每天养成的习惯
- 挂载非引用Assembly中的事件
- objectarx与mfc的结合
- D3DXMatrixRotationAxis对应的数学公式
- 灌水
- 出现"fatal error LNK1112: 模块计算机类型“THUMB”与目标计算机类型“ARM”冲突 "解决方法
- linux脚本自己写的
- DHCP服务器回复数据包是单播还是广播的争议
- PKU 2243 Knight Moves
- Windows下Critical Section、Event、Mutex、Semaphores区别
- deffactory.dat cannot be opened 解决方案