MFC

0 голосов
спросил 23 Июль, 07 от Kovalenko (1,020 баллов) в категории Программные продукты Esri
А у кого есть пример работающего приложения под MFC типа диалог.
Мне не удается прописать итерфейсі типа IMapControl2Ptr, а как результат контрол работает но получить объект типа Layer и прочее не выходит

14 Ответы

0 голосов
ответил 25 Июль, 07 от new_sergei1 (1,240 баллов)
2 -ЗА-

А ты потом сможешь использовать исключённые интерфейсы? Например, тебе понадобиться дальше работать с записями в таблице - т.е. интерфейс IRow. Возможно будет его потом использовать?
0 голосов
ответил 25 Июль, 07 от -3A- (5,220 баллов)
нет, нельзя
придется делать по другому
примерно так:


#import <esriSystem.olb> named_guids no_namespace raw_interfaces_only no_implementation exclude("OLE_COLOR","OLE_HANDLE","VARTYPE")
#import <esriSystemUI.olb> named_guids no_namespace raw_interfaces_only no_implementation rename("ICommand", "esriICommand") rename("IProgressDialog", "esriIProgressDialog")
#import <esriGeometry.olb> named_guids no_namespace raw_interfaces_only no_implementation
#import <esriDisplay.olb> named_guids no_namespace raw_interfaces_only no_implementation
#import <esriGeoDatabase.olb> named_guids no_namespace raw_interfaces_only no_implementation rename("IRow","esriIRow") rename("ICursor", "esriICursor")
#import <esriSystemUtility.olb> named_guids no_namespace raw_interfaces_only no_implementation
#import <esriCarto.olb> named_guids no_namespace raw_interfaces_only no_implementation rename("ITableDefinition", "esriITableDefinition") exclude("UINT_PTR")


и соответственно, пользовать в своем коде esriIXXX-интерфейсы для доступа к ArcGIS
0 голосов
ответил 25 Июль, 07 от new_sergei1 (1,240 баллов)
Т.е. использовать их можно будет только тогда, когда измениш именя интерфейсов? Например строчка IRowPtr ipRow; ipRow.CreateInstance(CLSID_Row) будет выглядеть esriIRowPtr ipRow; ipRow.CreateInstance(CLSID_esriIRow)?
0 голосов
ответил 25 Июль, 07 от -3A- (5,220 баллов)
да, именно так
(если не учитывать, что IRow так создать нельзя ;) )
тут уж ничего не поделаешь - дело в том, что интерфейсы ICursor и IRow определены в OLEDB
поэтому VisualStudio и ругается при импорте

чтобы не путать имена - приходится их переопределять

в принципе, есть еще один вариант: использовать пространства имен (убрав фразу no_namespace), но здесь он не прокатывает из-за ошибок в утилите импорта (той самой, которая обрабатывает прагму #import)
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...