advanced arcobjects component development ii (c++)

20
Advanced ArcObjects Component Development II (C++) Copyright © 2002 ESRI. All rights reserved. Advanced ArcObjects Component Development II (C+ +)

Upload: fisk

Post on 12-Jan-2016

78 views

Category:

Documents


2 download

DESCRIPTION

Advanced ArcObjects Component Development II (C++). Welcome. Instructor introduction Student introductions Name Organization Role in organization Programming experience VB, VC++ (ATL and MFC) Goals and expectations for this class Prerequisites AACD I, VC++, MFC, ATL. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Advanced ArcObjects Component Development II (C++)

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Advanced ArcObjects Component

Development II (C++)

Page 2: Advanced ArcObjects Component Development II (C++)

1-2Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Welcome

Instructor introduction

Student introductions Name

Organization

Role in organization

Programming experience

VB, VC++ (ATL and MFC)

Goals and expectations for this class

Prerequisites AACD I, VC++, MFC, ATL

Advanced ArcObjects Component

Development II (C++)

Page 3: Advanced ArcObjects Component Development II (C++)

1-3Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Quick questionnaire

How many people have: Written implementations of ICommand or IExtension?

Used ArcObjects Online, developer help, OMDs, Exploring AO?

Used smart types (smart pointers)? Understand smart types?

Used source-sinks for outbound interfaces in VC++?

Written ArcObjects-ATL components?

Written geodatabase extensions?

Used aggregation to write custom features for the geodatabase?

Page 4: Advanced ArcObjects Component Development II (C++)

1-4Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Logistics

Daily schedule Start _______________

Lunch _______________

Finish _______________

Facilities Refreshments and break area

Restrooms

Telephones and messages

Internet access

Student ID badges

Parking

Page 5: Advanced ArcObjects Component Development II (C++)

1-5Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Course materials

Books Lecture

Exercise

CDs Course data

Online course evaluation http://classeval.esri.com

Course Identification Number: _______________

Software evaluation Email enhancement requests to product teams

http://arconline.esri.com/arconline/feedback.cfm

Page 6: Advanced ArcObjects Component Development II (C++)

1-6Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Course timeline

Product review

Development directions

C++/COM review

ATL applications

Advanced ATL

Geodatabase customization

MFC applications

Page 7: Advanced ArcObjects Component Development II (C++)

1-7Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Course objectives

Write ArcObjects applications with VC++

Build on concepts introduced in Advanced ArcObjects Component Development I (AACD I)

Understand multi-component integration

Learn more about the ArcObjects development framework

Ask questions and participate in discussions

Page 8: Advanced ArcObjects Component Development II (C++)

1-8Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

ArcGIS overview

Data

ArcGIS Server

ArcIMS

Personalgeodatabase

ArcSDERDBMSserver

Webserver

Enterprisegeodatabase

ImageCoverage Grid

Shapefile TIN CAD

Webbrowser

ArcInfo

ArcEditor

ArcView

ArcMap

ArcCatalog

ArcToolboxWorkstation

Extensions

Page 9: Advanced ArcObjects Component Development II (C++)

1-11

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

GIS in the enterprise

Web browser

ArcReader

ArcView 8 & ArcView 3

ArcEditor & ArcPad

ArcInfo

ArcSDE& ArcIMS

Internet-basedmap viewing

Desktop-basedmap viewing

General analysisand visualization

Data editingand maintenance

Advanced modelingand analysis

Data managementand distribution

Extensions

Number of usersD

evelop

er interface

Page 10: Advanced ArcObjects Component Development II (C++)

1-13

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Database Design / Development

Geodatabase Design

Conceptsi

Learning paths

Proficiency

Learning ArcGIS II:

Presenting information

WIntroduction to ArcGIS II

i

Foundation

Learning ArcGIS I

WIntroduction to ArcGIS I

i

Creating, Editing, and Managing

Geodatabases

W

Creating and Managing

Geodatabasesi

Extensions

Customization /ProgrammingIntroduction

to Visual Basic for

ESRI software

W

Introduction to

Programming ArcObjects with VBA

i

(more)

(more)

Advanced ArcObjects Component

Development I

i

Advanced ArcObjects Component

Development II

i

Page 11: Advanced ArcObjects Component Development II (C++)

1-14

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Online Support Center isgateway to resources

http://support.esri.com

Downloads Software upgrades

Technical papers

ArcScripts

User-to-user resources Discussion forums

Email lists

Technical archives Knowledge base

Documentation

System requirements

Software support resources

ESRI Technical Support Request support online

Find phone and fax numbers

Available to support subscribers

Page 12: Advanced ArcObjects Component Development II (C++)

1-16

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

ArcObjects: The foundation

Development platform for all ArcGIS applications

Three main products: ArcInfo, ArcEditor, and ArcView Applications: ArcMap, ArcCatalog, ArcToolbox, ArcScene

Application extensions: 3D Analyst, ArcPress…

Available license controls the objects that are available No reinstall required

Developers use ArcObjects to write custom COM objects to extend and customize applications

Page 13: Advanced ArcObjects Component Development II (C++)

1-17

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Development triangle

Recommended progression

Start here

EmbeddingArcObjects

Stand-alone applications

Custom features and workspaces

Custom layers and renderers

Document persistence

Windows Property pagesViews

Geodatabase class extensions Application extensions

Editor tools

Commands Buttons Tools Menus Toolbars

VBA Macros and UIControls

Map Control

Difficulty of implementation

Page 14: Advanced ArcObjects Component Development II (C++)

1-18

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

ArcObjects development with VBA

Learning ArcObjects: Many samples, help system

Prototyping, testing, and exploring ArcObjects API

For relatively simple application extensions

Distribute functionality in an MXD or MXT format

Free

Page 15: Advanced ArcObjects Component Development II (C++)

1-19

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

ArcObjects development with VB

Everything possible in VBA

Implement interfaces and create custom components

Obtain more advanced functionality and extensions

Encapsulates COM programming details

Very easy to use and fast to write prototypes

Many samples

Hide code in binary DLLs

Page 16: Advanced ArcObjects Component Development II (C++)

1-20

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

ArcObjects development with VC++

Everything possible in VB and VBA

More advanced components and extensions options Implement every interface, even those supporting inheritance

Other considerations Rich Object Oriented development environment (inheritance)

Better debugging environment (no problems like VB 6)

Control type library names and GUIDs explicitly

Explicit control of COM server design (e.g., custom marshaling)

Considered standard for large-scaled software development projects

Page 17: Advanced ArcObjects Component Development II (C++)

1-21

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Which development environment to use?

Reasons you should avoid using VB Advanced component implementation or interface inheritance

Interface members contain IUnknown* argument types

Application requires aggregation

VB hides implementation details: Is that really bad?

Performance concerns? VC++: Fastest

VB: Approximately 2% slower

VBA: Approximately 4% slower

VB versus VC++ development time? Depends on experience level

Page 18: Advanced ArcObjects Component Development II (C++)

1-22

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Exercise 1 overview

Install the class data

Determine the installation directory for ArcMap

Explore the class materials: Data, exercises…

Set Visual Studio file paths for: esriCore.olb

ArcCATIDs.h

Page 19: Advanced ArcObjects Component Development II (C++)

1-23

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.

Review

What is ArcObjects?

What are three main ArcGIS products?

What are the two main levels of customization?

What is the best development language to use?

What is the most important developer resource?

What is the purpose of IExtensionConfig?

Page 20: Advanced ArcObjects Component Development II (C++)

1-24

Advanced ArcObjects Component Development II (C++)Copyright © 2002 ESRI. All rights reserved.