अपने पिछले पोस्ट
habrahabr.ru/post/164305 की निरंतरता में
मैं ऑटोकैड के तहत C # में विकसित होने पर दिलचस्प सूक्ष्मताएं प्रकाशित करना जारी रखता
हूं । आज हम मॉडल विंडो का उपयोग करते समय ऑटोकैड पर ध्यान केंद्रित करने की समस्या को हल करने पर ध्यान केंद्रित करेंगे।
संक्षेप में समस्या के बारे में। WPF में बनाए गए अपने स्वयं के संवाद बॉक्स को प्रदर्शित करने के लिए, आपको Application.ShowModlessWindow (_mw) विधि का उपयोग करना होगा;
public class CommandClass
{
static MainWindow _mw;
[CommandMethod("OpenMdlWindow")]
public static void OpenWindow()
{
if (_mw == null)
{
_mw = new MainWindow();
Application.ShowModelessWindow(_mw);
}
_mw.Closed += _mw_Closed;
}
}
मान लीजिए कि हमने अपने फॉर्म पर एक बटन बनाया है, जिसे क्लिक करने पर, मानक
_purge कमांड का उपयोग करके ड्राइंग को साफ करने की प्रक्रिया शुरू होती है। ऐसा करने के लिए, बटन ईवेंट हैंडलर में एक विधि जोड़ें:
Document _acDoc;
internal void Clear()
{
_acDoc.SendStringToExecute(
"._-PURGE " + "_ALL " + "\n" + "_N ",
false, false, false
);
};
जब एक बटन क्लिक किया जाता है तो क्या होता है? लेकिन जब तक हम ऑटोकैड विंडो में माउस के साथ क्लिक नहीं करते हैं।
केवल .NET ऑटोकैड .NET एपीआई का उपयोग करके अनावश्यक मैनुअल फोकस अनुवाद से बचें, लेकिन आपको पी / चालान का उपयोग करना होगा। यह बस किया जाता है:
1. जोड़ें
[DllImport("user32.dll")]
extern static IntPtr SetFocus(IntPtr hWnd);
2. हम अपना तरीका बदलते हैं
internal void Clear()
{
SetFocus(Application.DocumentManager.MdiActiveDocument.Window.Handle);
_acDoc.SendStringToExecute(
"._-PURGE " + "_ALL " + "\n" + "_N ",
false, false, false
);
}
वह सब है।