Wrote a title long AH ~ ~ ~
I've known a new gadget these two days, and I've got a record of that, La La ~~~~~.
It's been almost ten years since I've known ArcGIS, from the desktop to the engine two times, but only to recognize the tip of the iceberg,
It always brings a lot of unknown things, to tell the truth, is so love it, because never feel that swim, no border ~~~~~
Arcengine two times development, this thing is not popular now, but its mystery and fun is still infinite ~ ~ ~
Word to return:
I. Previously written basetool,basecommand classes are run in standalone systems and are not individually registered as components in the desktop version of ArcMap that have been used in the BASETOOL structure:
Public AddPolygonSymbol1 ()
public override void OnCreate (object hook)
public override void OnClick ()
public override void OnMouseDown (int Button, int Shift, int X, int Y)
......... Wait a minute
Private Imapcontroldefault M_pmapcontrol = null;
has been passing its current mapcontrol through M_pmapcontrol in OnCreate (object hook), such as This.m_pmapcontrol = hook as imapcontroldefault;
But, instead of the tool you want to refer to in ArcMap, here are a few things to do:
Two. Modify the method of passing hooks in the Basetool,basecommand class,
private iapplication m_application;
public override void OnCreate (object hook)
{
M_application = hook as iapplication;
If (Hook is imxapplication)
Base.m_enabled = true;
Else
base.m_enabled = false;
} and correspond to other places in the code, such as
Imxdocument mxdocument = Application. Document as Imxdocument; Dynamic Cast
Iactiveview ActiveView = Mxdocument.activeview;
In short, get the mapcontrol under the things AH.
After the class modification is complete, you can register to generate the TLB file.
Three. Practice, 1. Add the registered code to the code, I directly copy the code in the example, the other method is unknown, to generate a new GUID on its own OK;
2. In Visual Studio, Project right-click Properties, generate, tick "register for COM Interop"
3. Modify [Assembly:comvisible (True)] to ture in the AssemblyInfo.cs of the project;
Then re-make the achievement OK, in the debug below will find the. tlb file, that's what you want:
This step is the source of reference: http://www.cnblogs.com/carekee/articles/2227480.html
Four. Load the TLB file for this tool in ArcMap and use it.
Loading method: Click the small arrow in the red box, any one can
Then, in the Customise dialog box, select Add from File:
When you're done adding, you can see that the Commands tab below Walkthroughs has more of its own defined tools,
Here "walkthroughs" is defined in the code constructor of base.m_category = "walkthroughs";
Plus it's ready to use, and here I'm adding a AddPolygonSymbol1 tool,
Another, I have always been to achieve the purpose of superficial understanding, basetool actually used before,
But do not know how to register as a tool in the desktop version of the use, because the COM component of these things actually do not know very much,
So it's all about fur, just a little.
Problem:
1.com Component registration method, in VS, those code can be automatically generated?
2. Custom generated tool, add picture did not succeed, GetType (). Name these things do not know exactly how to read;
3. How to get rid of the tools loaded on ArcMap ~ ~ ~
4. How do I add a toolbar in addition to the Custom tool button? ~~~~
Please advise the person who knows.
Visual studio2010 in C # generated, ArcGIS two times developed Basetool DLLs, registered as COM component tlb files, and loaded in ArcMap using