Использование Window.Focus в AutoCAD 2014
Среди новых API в AutoCAD 2014 включен метод Window.Focus. Этот метод очень полезен в том случае если вы используете палитры для вызова команд, которые заставляют AutoCAD запрашивать у пользователя информацию. В предыдущих версиях AutoCAD его редактор не получал фокус пока на нём не был активизирован. Это требовало дополнительного нажатия кнопки мыши. Чтобы избежать этого требовалось или вызвать функцию SetFocus из Win32 API посредством P/Invoke или использовать недокументированный метод Internal.Utils.SetFocusToDwgView.
Начиная с AutoCAD 2014 вместо этого можно использовать метод Window.Focus В качестве примера, если вы используете в палитре кнопку для вставки блока с именем «Autodesk», тогда вы можете использовать метод Window.Focus в функции обратного вызова таким образом:
- using Autodesk.AutoCAD.ApplicationServices;
- using AcAp = Autodesk.AutoCAD.ApplicationServices;
- private void InsertBlockBtn_Click(object sender, EventArgs e)
- {
- AcAp.Document activeDoc
- = AcAp.Application.DocumentManager.MdiActiveDocument;
- dynamic acadDocObj = activeDoc.GetAcadDocument();
- activeDoc.Window.Focus();
- acadDocObj.SendCommand(String.Format("_-Insert\nAutodesk\n"));
- // Или:
- //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
- //);
- }
Источник: http://adndevblog.typepad.com/autocad/2013/03/use-of-windowfocus-in-autocad-2014.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=203
Опубликовано 06.09.2013