200 likes | 466 Views
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.
E N D
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++)
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?
Logistics • Daily schedule • Start _______________ • Lunch _______________ • Finish _______________ • Facilities • Refreshments and break area • Restrooms • Telephones and messages • Internet access • Student ID badges • Parking
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
Course timeline MFC applications Product review C++/COM review Advanced ATL Development directions ATL applications Geodatabase customization
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
ArcMap Extensions ArcCatalog ArcToolbox Workstation ArcGIS overview Webbrowser ArcGIS Server ArcInfo ArcIMS Webserver ArcEditor ArcView ArcSDE RDBMSserver ArcObjects Data Enterprisegeodatabase Personalgeodatabase Coverage Grid Image Shapefile TIN CAD
GIS in the enterprise Developer interface ArcSDE& ArcIMS Data managementand distribution Advanced modelingand analysis ArcInfo Data editingand maintenance Extensions ArcEditor & ArcPad General analysisand visualization ArcView 8 & ArcView 3 Desktop-basedmap viewing ArcReader Internet-basedmap viewing Web browser Number of users
Introduction to ArcGIS I Introduction to Programming ArcObjects with VBA Advanced ArcObjects Component Development I i i i Introduction to Visual Basic for ESRI software Learning ArcGIS I W W Learning ArcGIS II: Presenting information W Creating and Managing Geodatabases Geodatabase Design Concepts Creating, Editing, and Managing Geodatabases i i W Learning paths Customization /Programming Foundation Proficiency Extensions Introduction to ArcGIS II (more) i Database Design / Development Advanced ArcObjects Component Development II i (more)
Software support resources • 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 • ESRI Technical Support • Request support online • Find phone and fax numbers • Available to support subscribers
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
Development triangle Embedding ArcObjects 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 2 Map Control Difficulty of implementation Recommended progression ArcObjects Framework 1 Start here
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
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
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
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
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
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?