捕捉AutoCAD的鼠标滚轮事件
在雪山飞狐兄的指导下,修改了Kean的一个帖子(见http://mjtd.com/bbs/dispbbs.asp?boardid=33&ID=76191 四楼),能在AutoCAD 2009以上版本中捕捉鼠标滚轮事件。注意:要引用WindowsBase。
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using System.Windows.Interop;
using System;
namespace PreTranslate
{
public class Commands
{
const int WM_MOUSEWHEEL = 522;
public void testOn()
{
Application.PreTranslateMessage += new PreTranslateMessageEventHandler(Application_PreTranslateMessage);
}
void Application_PreTranslateMessage(object sender, PreTranslateMessageEventArgs e)
{
if (e.Message.message == WM_MOUSEWHEEL)
{
System.Windows.Forms.MessageBox.Show("你在CAD操作中转动滚轮了!");
}
}
public void testOff()
{
Application.PreTranslateMessage -= new PreTranslateMessageEventHandler(Application_PreTranslateMessage);
}
}
}
回帖是一种美德!感谢楼主的无私分享 谢谢 <p>麻烦高手转成vb.net。</p> 转成vb.net
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Imports System.Windows.Interop
Imports System
Namespace PreTranslate
Public Class Commands
Const WM_MOUSEWHEEL As Integer = 522
<CommandMethod("testOn")> _
Public Sub testOn()
AddHandler Application.PreTranslateMessage, AddressOf Application_PreTranslateMessage
End Sub
Private Sub Application_PreTranslateMessage(ByVal sender As Object, ByVal e As PreTranslateMessageEventArgs)
If e.Message.message = WM_MOUSEWHEEL Then
System.Windows.Forms.MessageBox.Show("你在CAD操作中转动滚轮了!")
End If
End Sub
<CommandMethod("testOff")> _
Public Sub testOff()
RemoveHandler Application.PreTranslateMessage, AddressOf Application_PreTranslateMessage
End Sub
End Class
End Namespace 顶。 一下。收藏了。 <p>麻烦哪位VB.net高手解释一下这句话的意思是什么?</p><p>AddHandler Application.PreTranslateMessage, AddressOf Application_PreTranslateMessage</p><p>addhandler应该是添加一个回传,就是是相当于VB中的钩子吧,可能是,但Application是指谁呢,是指.net所做的程序吗?</p><p>如果这样的话,是不是在别的窗口中按滑轮,也会有相应的消息弹出来呢?</p><p>我以前装了。net,但不会用删了,现在试不了,有时候再试试,也希望高手能做一些解答。</p> 还有,上述vb.net代码应怎样才能运行?要引用哪一个CAD的类库呢 <p>Application:AutoCad的Net版本应用程序实例</p><p>引用Cad目录下的两个托管Dll:AcDbMgd.dll,AcMgd.dll</p><p>上面的功能在2009以上版本可以实现,低版本要用另外的办法</p> <p>哦,我在2008上试,在。net编辑器中通不过,错误很多,没有2009以上的cad/</p> 新手学习了!! 09版本以下除了用钩子函数以外还有别的办法实现没?
页:
[1]
2