在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法

[MXDRAW CAD控件文档]

下面帮助的完整例子,在控件安装目录的Sample\Ie\iedemo.htm中.

1.      主要用到函数说明

A.      ImplementCommandEventFun

控件的命令事件函数,与用户交互的操作,需要放到命令事件函数内实现,这样控件才能保证正常的Windows 消息循环被处理。

B.       ImplementMouseEventFun

控件的鼠标事件函数,可以用JS程序里,响应鼠标事件,详细说明如下:

voidMouseEvent(LONG lType, DOUBLE dX, DOUBLE dY, LONG* lRet);

LONG lType

事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标左键释放 6是鼠标右键释放 7是鼠标中键按下 8是鼠标中键释放 9是鼠标中键双击 10是鼠标中键滚动

DOUBLE dX

事件发生时的鼠标X坐标,文档坐标

DOUBLE dY

事件发生时的鼠标Y坐标,文档坐标

LONG* lRet

lRet 返回非0,消息将不在往下传递

C.       DrawLine

用于在DWG图上绘制一条直线,详细说明如下:

参数

说明

DOUBLE dX1

直线的开始点x坐标

DOUBLE dY1

直线的开始点y坐标

DOUBLE dX2

直线的结束点x坐标

DOUBLE dY2

直线的结束点y坐标

D.      IMxDrawSelectionSet::SelectAtPoint2

返回一点坐标下面的实体对象,可以设置过滤条件,返回某层,某类型等属性的对象。

2.      JS中实现代码说明

A.      在网页中引用控件,

clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2是控件的GUID.

控件程序可以做成CAB安装包,并可进行数据签名,方便网页中自动安装下载.

详细参考例子:http://www.mxdraw.com/iedemo.html

<objectclassid="clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2"id="MxDrawXCtrl" codebase="http://www.mxdraw.com/MxDrawX.CAB#version=1,0,0,1"width=100% height=90%>

<paramname="_Version" value="65536">

<paramname="_ExtentX" value="24262">

<paramname="_ExtentY" value="16219">

<paramname="_StockProps" value="0">

<!--<param name="DwgFilePath"value="http://www.mxdraw.com/downland/test.dwg"> -->

<paramname="IsRuningAtIE" value="1">

<paramname="EnablePrintCmd" value="1">

<paramname="ShowStatusBar" value="1">

<paramname="ShowMenuBar" value="1">

<paramname="ShowToolBars" value="1">

<paramname="ShowCommandWindow" value="1">

<paramname="ShowModelBar" value="1">

<paramname="IniFilePath"value="AutoActive=N,LoadMrx=PropertyEditor.mrx">

<param name="ToolBarFiles" value="MxDraw-ToolBar.mxt,MxDraw-ToolBar-DrawParam.mxt,MxDraw-ToolBar-Draw.mxt,MxDraw-ToolBar-Edit.mxt">

</object>

<script>

 

B.       设置命令事件回调函数

document.getElementById("MxDrawXCtrl").ImplementCommandEventFun= DoCommandEventFunc;

C.      设置鼠标事件回调函数

document.getElementById("MxDrawXCtrl").ImplementMouseEventFun= MouseEvent;

D.      在命令事件交互绘制一条直线

该事件将会被,网页中的myclick按钮点击触发,如下:

function myclick()

{

document.getElementById("MxDrawXCtrl").DoCommand(1);

}

下面是绘制直线代码:

function DoCommandEventFunc(iCmd)

{

// 命令事件ID.

if (iCmd == 1)

{

// 得到网页的中的控件对象.

varmxOcx = document.all.item("MxDrawXCtrl");

mxOcx.focus();

varpoint1 = mxOcx.GetPoint(null,"\n 点取开始点:");

if(point1== null)

{

return;

}

varpoint2 = mxOcx.GetPoint(point1,"\n 点取结束点:");

if(point1== null)

{

return;

}

// 绘制一条直线.

mxOcx.DrawLine(point1.x,point1.y,point2.x,point2.y);

}

}

E.       在鼠标事件中得到鼠标点击的对象.

function MouseEvent(dX,dY,lType)

{

// 4是鼠标左键双击

if(lType== 4)

{

// 得到网页的中的控件对象

varaxMxDrawX1 = document.getElementById("MxDrawXCtrl");

// 创建一个选择集对象

varss = axMxDrawX1.CallCustomFunction("Mx_NewSelectionSet","");

// 创建一个点对象

varpt = axMxDrawX1.CallCustomFunction("Mx_NewPoint","");

// 创建一个过滤条件对象

var fil= axMxDrawX1.CallCustomFunction("Mx_NewResbuf","");

// 把鼠标点击坐标,赋值给点对象.

pt.x = dX;

pt.y =dY;

// 在该点处构造选择集.

ss.SelectAtPoint2(pt,fil);

//ss.Coune是选择集中对象数目

if(ss.Count > 0)

{

// 得到选择集中的第一个点对象.

var ent = ss.Item(0);

// 输出信息.

alert("点击了" + ent.ObjectName + "对象");

}

// 取消后面的命令。

axMxDrawX1.SendStringToExecute("");

return1;

}

return 0;

}

在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法的更多相关文章

  1. MFC动态创建对话框中的按钮控件并创建其响应消息

    转自:http://www.cnblogs.com/huhu0013/p/4626686.html 动态按钮(多个)的创建: 1.在类中声明并定义按钮控件的ID #define IDC_D_BTN 1 ...

  2. C# Winform中WebBrowser给网页中的input控件赋值/设置值

    订阅WebBrowser的DocumentCompleted事件,在里面写入 private void browser_DocumentCompleted(object sender, WebBrow ...

  3. QT中给各控件增加背景图片(可缩放可旋转)的几种方法

    http://blog.csdn.net/liukang325/article/details/44832397 1. 给QPushButton 增加背景图片:背景图片可根据Button大小自由缩放. ...

  4. 在web中使用windows控件,实现摄像头功能

    最近做的一个Web版的视频会议项目,需要在网页中播放来自远程摄像头采集的实时视频,我们已经有了播放远程实时视频的使用C#编写的windows控件,如何将其嵌入到网页中去了?这需要使用一种古老的技术,A ...

  5. 在Web中使用Windows控件

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+] 将Net控件转化为ActiveX控件 1GUID 2实现IObjectSafety接口 3程序集设定 制作安装程序 Web集 ...

  6. Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

    在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用andro ...

  7. Ext.Net中的Task控件的使用

    在用到Ext.Net中的Task控件的时候,写了一下基本的使用方法: 控件是在TaskManager里面的Tasks下面的Task 此控件的常用属性有,TaskID.Interval(设置间隔时间). ...

  8. 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件

    项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...

  9. JS与APP原生控件交互

    "热更新"."热部署"相信对于混合式开发的童鞋一定不陌生,那么APP怎么避免每次升级都要在APP应用商店发布呢?这里就用到了混合式开发的概念,对于电商网站尤其显 ...

随机推荐

  1. psping

    psping工具功能主要包括:ICMP Ping.TCP Ping.延迟测试.带宽测试,是微软出品. 下载地址:https://download.sysinternals.com/files/PSTo ...

  2. C# MVC 用户登录状态判断 【C#】list 去重(转载) js 日期格式转换(转载) C#日期转换(转载) Nullable<System.DateTime>日期格式转换 (转载) Asp.Net MVC中Action跳转(转载)

    C# MVC 用户登录状态判断   来源:https://www.cnblogs.com/cherryzhou/p/4978342.html 在Filters文件夹下添加一个类Authenticati ...

  3. EJB之JPA

    在前一篇文章中大概了解了EJB是什么?那么接下来就进一步介绍一下它与JPA有什么样的关系?及什么是JPA?JPA怎样用? 一.是什么? 第一次听说JPA是在EJB视屏中,所以一直感觉他们有不解的渊源. ...

  4. leetcode第一刷_Best Time to Buy and Sell Stock

    这样的题就不要去考虑N^2的算法了.肯定会超时的.乍一看,非常可能会想到贪心,可是普通的贪心思路是不行的,比方想找到一个最小值用来买入.尽管它跟最大值之间的差一定是最好的,可是最大值出如今它前面就不行 ...

  5. Android关于Task的一些实践之SingleTask, SingleInstance和TaskAffinity

    上一篇文章粗略地介绍了一下关于Android中Task的基本知识.只是实践才是检验真理的唯一标准,所以.今天就来试验一下Task中的launchMode是否真的实现了文档所说的那样. 首先.定义三个A ...

  6. Cocos2d-x编译Android环境

    1.Android环境搭配: 下载jdk 下载Android ADT 下载安装Android SDK,地址:http://developer.android.com/sdk/index.html#do ...

  7. Codeforces 690 C3. Brain Network (hard) LCA

    C3. Brain Network (hard)   Breaking news from zombie neurology! It turns out that – contrary to prev ...

  8. java SocketChannel and ServerSocketChannel

    1 SocketChannel 1.1 打开一个SocketChannel SocketChannel socketChannel = SocketChannel.open(); socketChan ...

  9. YTU 2633: P3 数钱是件愉快的事

    2633: P3 数钱是件愉快的事 时间限制: 1 Sec  内存限制: 128 MB 提交: 387  解决: 215 题目描述 超市收银员的钱盒里,各种钞票总是按照面额分类整理,这样做可以提高效率 ...

  10. Spring 框架学习 —— 容器

    容器是 Spring 框架的核心.Spring 容器使用 DI(依赖注入)机制管理构成应用的组件(类),所谓 DI,也即是其能够创建相互协作的组件(类)之间的关联(依赖). 1. 应用上下文(Appl ...