以管理员身份启动CAD控件 \Bin\vc100\RegistMxDrawX.exe ,以向系统注册梦想CAD控件。
运行 VC6 ,新建工程,点击如下图的 命令菜单 ”,出现插入组件窗口
导入CAD控件后的工具条:
在 stdafx.h 文件中导入CAD控件的类型库,代码如下:
#import "..\..\..\..\..\Bin\vc100d\MxDrawX.ocx" rename("GetObject", "MxGetObject") rename("DrawText", "MxDrawText") rename("GetClassName", "MxGetClassName") rename("SetProp", "MxSetProp") rename("GetProp", "MxGetProp") rename("GetTempPath", "MxGetTempPath")
在对话框资源中插入CAD控件,编译运行程序,效果如下所示:
先在系统中注册MxDrawX.ocx,在VC中引用MxDrawX.ocx,如下图,执行导入组件命令。
在Components and controls gallery对话框,选择MxDrawX.ocx,点击插入按钮。
在Stdafx.h文件中引入CAD控件的类型库,如下代码:
// 导入MxDrawX.ocx类型库,事先需要设置VC包含路径,指名MxDrawX.ocx所在位置 #import "MxDrawX.ocx" // 包括ATL库,可以它的COM智能指针 #include "ATLBASE.H" // 使用MxDrawXLib名字空间. using namespace MxDrawXLib;
在对话框资源编辑器里,引用CAD控件,并设置控件的IniFilePath属性值为EnableViewModifyNotify=Y如下:
响应控件的,自定义事件,用VC向导自动加入:
增加CAD控件变量,用向导自动加入:
在CAD控件事件处理函数里,加入如下代码,得到视区变化的通知:
void CTestMxDrawXDlg::OnCustomEventMxdrawxctrl1(LPCTSTR sEventName) { // TODO: Add your control notification handler code here CString sEventNameTmp(sEventName); // 得到事件参数 IDispatch* pDispatch = m_ocx.CustomEventParam(); CComPtr<IMxDrawResbuf> spParam; pDispatch->QueryInterface(&spParam); // Mx_ViewModify 是事件名称. if(sEventNameTmp == _T("Mx_ViewModify")) { // 视区的中心点X坐标。文档坐标 DOUBLE dCenX = spParam->AtDouble(0); // 修改后的视区的中心点Y坐标。文档坐标 DOUBLE dCenY = spParam->AtDouble(1); // 视区宽度,文档坐标 DOUBLE dW = spParam->AtDouble(2); // 视区高度,文档坐标 DOUBLE dH = spParam->AtDouble(3); CString sT; sT.Format(_T("中心点X: %lf,中心点Y:%lf,视区宽度:%lf,视区高度:%lf"), dCenX,dCenY,dW,dH); AfxMessageBox(sT); } // 释放COM接口 pDispatch->Release(); }