在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法
在网页中引用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控件,交互绘图,和响应鼠标点击对象的方法的更多相关文章
- MFC动态创建对话框中的按钮控件并创建其响应消息
转自:http://www.cnblogs.com/huhu0013/p/4626686.html 动态按钮(多个)的创建: 1.在类中声明并定义按钮控件的ID #define IDC_D_BTN 1 ...
- C# Winform中WebBrowser给网页中的input控件赋值/设置值
订阅WebBrowser的DocumentCompleted事件,在里面写入 private void browser_DocumentCompleted(object sender, WebBrow ...
- QT中给各控件增加背景图片(可缩放可旋转)的几种方法
http://blog.csdn.net/liukang325/article/details/44832397 1. 给QPushButton 增加背景图片:背景图片可根据Button大小自由缩放. ...
- 在web中使用windows控件,实现摄像头功能
最近做的一个Web版的视频会议项目,需要在网页中播放来自远程摄像头采集的实时视频,我们已经有了播放远程实时视频的使用C#编写的windows控件,如何将其嵌入到网页中去了?这需要使用一种古老的技术,A ...
- 在Web中使用Windows控件
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 将Net控件转化为ActiveX控件 1GUID 2实现IObjectSafety接口 3程序集设定 制作安装程序 Web集 ...
- Android中通过WebView控件实现与JavaScript方法相互调用的地图应用
在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用andro ...
- Ext.Net中的Task控件的使用
在用到Ext.Net中的Task控件的时候,写了一下基本的使用方法: 控件是在TaskManager里面的Tasks下面的Task 此控件的常用属性有,TaskID.Interval(设置间隔时间). ...
- 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件
项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...
- JS与APP原生控件交互
"热更新"."热部署"相信对于混合式开发的童鞋一定不陌生,那么APP怎么避免每次升级都要在APP应用商店发布呢?这里就用到了混合式开发的概念,对于电商网站尤其显 ...
随机推荐
- SSL和SSH的差别
有人说,SSH通常是用来提供安全的登录用的.SSL仅仅是一个在协议层中增加的一层用来提供安全. SSH工作在TCP之上,能够在启动一个SSH应用后.在其通道里执行其他协议的应用.如邮件. ...
- JavaScript基础 -- 常见DOM树操作
1.创建并增加元素节点 <ul id="ul"> <li>1</li> <li>2</li> <li>3&l ...
- leetcode 784. Letter Case Permutation——所有BFS和DFS的题目本质上都可以抽象为tree,这样方便你写代码
Given a string S, we can transform every letter individually to be lowercase or uppercase to create ...
- 美国诚实签经验——IMG全球医疗险,TODO
那么,诚实签最关键的4个要点 是什么呢? 第一,证明你有一定的经济实力. 可能需要房产.存款等证明,也需要银行信用卡或借记卡半年流水证明(让人信服的每月进帐和消费能力). 这些是为了证明,你可以支付在 ...
- [Codeforces 460C] Present
[题目链接] https://codeforces.com/contest/460/problem/C [算法] 二分 + 贪心 要求最小值最大 , 我们不妨二分最小值 , 若一盆花的高度小于二分的值 ...
- bzoj 3401: [Usaco2009 Mar]Look Up 仰望【单调栈】
用单调递减的栈从后往前扫一遍即可 #include<iostream> #include<cstdio> using namespace std; const int N=10 ...
- bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声【单调栈】
先考虑只能往一边传播,最后正反两边就行 一向右传播为例,一头牛能听到的嚎叫是他左边的牛中与高度严格小于他并且和他之间没有更高的牛,用单调递减的栈维护即可 #include<iostream> ...
- extjs grid禁止表格头部使用鼠标拖拽改变宽度
extjs6 经典版 表格头部使用鼠标拖动 禁止改变列的宽度 只需要给grid 设置属性enableColumnResize:false就可以啦 xtype:'grid', enableColumnR ...
- Left Join 时筛选条件在on后与where后的区别
a left join b 时限制条件在on后, 相当于先筛选右连接表b的数据后,再进行数据连接.形成最终的集合. 这时不影响a表中相关字段的显示. SELECT T001W~WERKS, LGOR ...
- JavaScript--History 对象
history对象记录了用户曾经浏览过的页面(URL),并可以实现浏览器前进与后退相似导航的功能. 注意:从窗口被打开的那一刻开始记录,每个浏览器窗口.每个标签页乃至每个框架,都有自己的history ...