返回介绍

响应视区变化事件

发布于 2023-08-09 23:10:33 字数 2124 浏览 0 评论 0 收藏 0

先在系统中注册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();
 
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文