LOGO
帮助文档
旧版文档
注册控件向系统注册控件导入控件运行效果响应视区变化事件
注册控件

以管理员身份启动CAD控件 \Bin\vc100\RegistMxDrawX.exe ,以向系统注册梦想CAD控件。

向系统注册控件

运行 VC6 ,新建工程,点击如下图的 命令菜单 ”,出现插入组件窗口


blob.png


blob.png


导入CAD控件后的工具条:


blob.png

导入控件

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控件,编译运行程序,效果如下所示:


1.png

响应视区变化事件

先在系统中注册MxDrawX.ocx,在VC中引用MxDrawX.ocx,如下图,执行导入组件命令。


vc6.png


在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如下:


vc6-1.png


vc6-2.png


响应控件的,自定义事件,用VC向导自动加入:


vc6-3.png


增加CAD控件变量,用向导自动加入:


vc6-4.png


在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();
 
}