田草博客

互联网田草博客


网友交流QQ群:11740834 需注明申请加入原因

微信 公众号:ByCAD

邮箱:tiancao1001x126.com
ByCAD,微信公众号
首页 | 普通 | 电脑 | AutoCAD | VB/VB.NET | FLash | 结构 | 建筑 | 电影 | BIM | 规范 | 软件 | ID
-随机-|-分布-
-博客论坛-|-﨣﨤﨧﨨-
-网站导航-|-规范下载-
-BelovedFLash欣赏-

用户登陆
用户:
密码:
 

站点日历
73 2024 - 12 48
1234567
891011121314
15161718192021
22232425262728
293031


站点统计

最新评论



How to display my custom web page in 剪切板中临时文件地址
未知 使用AutoCAD 2014的Window.Focus方法   [ 日期:2014-01-19 ]   [ 来自:本站原创 ]  HTML
原文地址
http://objectarx.net/forum.php?mod=viewthread&tid=10613
http://adndevblog.typepad.com/autocad/2013 ... focus-in-autocad-2014.html

AutoCAD 2014中新的API引进了Window.Focus方法。当你使用面板来调用一个需要用户输入的命令时,这个方法非常有用。在AutoCAD以前的版本中,只有当AutoCAD编辑器窗口被点击后,编辑器窗口才能取得焦点。这会有点麻烦,因为你需要一次额外的鼠标点击才能进行输入。解决这个问题的办法要么调用Win32 API的SetFocus函数或者使用一个未公开的方法:Internal.Utils.SetFocusToDwgView。
AutoCAD 2014的Window.Focus方法可以用来替代上述两个办法。例如,如果你要使用面板中的按钮插入一个名为Autodesk的块,那么你可以在按钮点击的回调函数中使用Window.Focus方法

The new API in AutoCAD 2014 includes the Window.Focus method. This method is very useful if you were using palette to call a command that requires AutoCAD to prompt for user input. In earlier versions of AutoCAD, the AutoCAD editor did not receive focus until the editor was clicked. This was a bit troublesome as it required an additional mouse click. The way to overcome it was to either call the "SetFocus" Win32 API through a dllimport or to use an internal undocumented method : "Internal.Utils.SetFocusToDwgView".

With AutoCAD 2014, the "Window.Focus" method can be used instead. As an example, if you had a button in the palette to insert a block named "Autodesk", then you can use the Window.Focus method from the button click callback method as :

using Autodesk.AutoCAD.ApplicationServices;
using AAA = Autodesk.AutoCAD.ApplicationServices;
private void InsertBlockBtn_Click(object sender, EventArgs e)
{
    AAA.Document activeDoc 
            = AAA.Application.DocumentManager.MdiActiveDocument;
    dynamic acadDocObj = activeDoc.GetAcadDocument();
    activeDoc.Window.Focus();
    acadDocObj.SendCommand(String.Format("-Insert\nAutodesk\n"));
    //            or
    //object acadDocObj = activeDoc.GetAcadDocument();
    //activeDoc.Window.Focus();
    //object[] OnedataArry = new object【1】;
    //OnedataArry[0] = String.Format("-Insert\nAutodesk\n");
    //acadDocObj.GetType().InvokeMember(
    //  "SendCommand",
    //  System.Reflection.BindingFlags.InvokeMethod,
    //  null, acadDocObj, OnedataArry
    //);
}


[本日志由 tiancao1001 于 2014-01-19 01:52 AM 编辑]


暂时没有评论
发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:   注册? 验证:  防止恶意留言请输入问题答案:1*5=?  
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字

字体样式 文字大小 文字颜色
插入粗体文本 插入斜体文本 插入下划线
左对齐 居中对齐 右对齐
插入超级链接 插入邮件地址 插入图像
插入 Flash 插入代码 插入引用
插入列表 插入音频文件 插入视频文件
插入缩进符合
点击下载按钮 下标 上标
水平线 简介分割标记
表  情
 
Tiancao Blog All Rights Reserved 田草博客 版权所有
Copyright ©