00:04In this presentation, I'm going to convert a VB6 class that implements ICommand...

00:10...into VB.NET base class called, "Base Command."

00:13I'm going to start here at the Resource Center... this VB6 sample called "PanZoom Commands."

00:19Inside here, there's about 12 commands.

00:21I'm going to work with the FixedZoomIn command.

00:23It's a VB6 command, I'm going to convert it to VB.NET.

00:28I've downloaded it to my machine; the sample comes in as a Zip file.

00:31I unpack it -- it become a Visual Basic 6 project with a bunch of classes in it.

00:37As I open VB6, I can see my class with all the others.

00:42And when I look at its code, I see that it implements ICommand, so there's a whole...

00:47...bunch of property procedures in here implementing all the members.

00:51There's a couple of OnCreate, OnClick event at the end here.

00:57I'm really interested in the OnClick event and all of its code -- this is my business logic.

01:02So here I'm going to go and bring up Visual Studio 2008.

01:05And I'm going to start making my VB.NET project.

01:08There's some ArcGIS integration here, where I have Desktop and Engine loaded...

01:13...and here I can build an ArcMap class library.

01:16So here, I'm going to build RobsCommand.

01:20And we'll go ahead and let it create this project for us.

01:24It's going to ask me for some references.

01:26I'm not going to set these now.

01:27I'll set them later on and discuss the settings a little bit later on.

01:32I'm going to delete the initial class that it builds...

01:36...and what I'm going to do here is make my own.

01:39So I'm going to go to Add and add a new class in over here.

01:43When I do this adding of a class, I get another set of templates from ArcGIS...

01:48...and these templates are base classes; I want base command.

01:54And mine is called FixedZoom.

02:01We'll add that in here.

02:02Now it wants to know -- for this command, is it going to work in...

02:05...ArcGlobe, or ArcScene, or ArcCatalog?

02:07And mine is an ArcMap command so I'll add it in over there.

02:11You do get a .bmp file, but the one you get is kind of silly there... I'm going to add in one of my own.

02:18Not really one of my own, but an existing item.

02:22And here I'm going to go to the download folder...

02:24...where I downloaded the PanZoom sample.

02:27And there's a resource folder there with all the .bmp files for all those commands.

02:32So I'll grab the one I like here for the ZoomIn.

02:36And I'm going to make a change over here for the ZoomIn .bmp.

02:41Instead of it being a Build Action of Content, I'm going to build it as an embedded resource... that I don't have a file dependency sitting out there.

02:51I'm going to grab just the text name of this command; and then my VB project...

02:57...I want to come in here to the setting of the .bmp file, .bmp property.

03:05All right, so I've got that prepared.

03:08My other properties here are all text strings.

03:11Instead of property procedures, they're text strings...

03:13...because here, we have a BaseCommand, a BaseClass.

03:17We're inheriting from BaseCommand.

03:19BaseCommand internally implements ICommand.

03:24So here, we don't see all those property procedures -- just property settings.

03:28So I can delete those, and I've got some prepared here that I've typed in...

03:32...and then you don't have to watch me fumble through a lot of poor typing skills.

03:39All right, so now I've got the cosmetic part done.

03:42The next thing I need to do is get the business logic from VB6.

03:45So here's all that code in the OnClick event.

03:50I'm going to copy and paste it over to my Visual Studio's OnClick event for this button.

03:57Oops, I've gone down a little farther than I wanted to here.

04:00And you can see I have a couple of references missing that I didn't add in earlier.

04:04I want to show you here with IActiveView and IEnvelope.

04:08What if this is somebody else's code and you don't know that IActiveView comes from...

04:12...Esri ArcGIS Carto?

04:14You can use the Library Locator.

04:17Grab one of the interface names in question, type it in here, and search.

04:21And here, it will give you the .NET assembly or namespace that you need to reference.

04:27Well, let's reference those now.

04:28I'll go to the project and add ArcGIS Reference.

04:32In the Desktop ArcMap there, there's ArcGIS Carto.

04:36I know I'm going to need Display... I'll add it in also and then geometry was that other one for IEnvelope.

04:43I finished there; I need to add one more reference that didn't appear in the listing...

04:49...there, but it's a reference to the ArcGIS controls.

04:56I need to get those controls in here... I add in the reference to those controls.

05:03Let me scroll down here to -- one more -- and get controls in here.

05:09The references are still blue.

05:11I get to come up here and do imports.

05:14I need to import those name spaces, and I'm going to get those from...

05:20...exactly, I've typed them in already, so I don't have to worry about any typing mistakes.

05:25All right, now the last thing I need to do is...

05:29...I've got another blue area here that describes my hook.

05:34And I'm going to need to set up a reference to the hook, so I'm just going to copy and...

05:37...paste some more code from VB.

05:41There's a hook helper variable declared here.

05:44I'm going to get that hook helper variable and paste it in.

05:49And then just to go on the quicker side, there's two others that I need...

05:53...and I'm going to paste them into the OnCreate here.

05:57And I've got some comments as to where I grabbed these two lines of code.

06:02One is from initial highs in VB 6 and one is from the VB 6 OnCreate.

06:07So I've got all my code in here, I'm going to go ahead and build this solution.

06:11It looks like the build worked properly; now, I'm going to go to ArcMap.

06:15You can see all the counties that I've been to here; the green ones are all my...

06:19...counties that I've visited

06:21Here, you see the ArcGIS commands for Rob; the FixedZoomIn command.

06:25I'll drag it up here; you can see it looks like the same one on the Tools toolbar.

06:30If I click it a few times, it zooms in on the map.

06:32So we've had a very successful conversion here from VB 6 to VB.NET...

06:37...using the base command.

06:40I could follow this same process from my other 11 commands there in the sample...

06:45...and simply take their business logic and move it over to a new base command.

06:50Well, on behalf of Esri, I'm Rob Burke.

06:53And I hope you've enjoyed the presentation -- so long and tanks for listening!

Copyright 2016 Esri
Auto Scroll (on)Enable or disable the automatic scrolling of the transcript text when the video is playing. You can save this option if you login

ArcGIS Application Migration: Converting Commands from VB6 to VB.NET

In this video, Rob Burke from Esri Educational Services provides a walk-through for how to convert a command class that implements ICommand from a VB6 project to a .NET project using Microsoft Visual Studio 2008.

  • Recorded: May 13th, 2010
  • Runtime: 07:03
  • Views: 751
  • Published: Aug 18th, 2011
  • Night Mode (Off)Automatically dim the web site while the video is playing. A few seconds after you start watching the video and stop moving your mouse, your screen will dim. You can auto save this option if you login.
  • HTML5 Video (Off) Play videos using HTML5 Video instead of flash. A modern web browser is required to view videos using HTML5.
Download VideoDownload this video to your computer.
<Embed>Customize the colors and use the HTML code to include this video on your own website
Start From:
Player Color:

Right-click on these links to download and save this video.


Be the first to post a comment
To post a comment, you'll need to login.
If you don't have an Esri Global Login ID, please register here.