Имею SDI+Doc/View и Grid control(в данном случае IGUltraGrid2.0.ocx), помогите:
Как прикрутить такой контрол
1. без создания кучи классов.
2. C возможностью получения из него CWnd;
Пытался использовать #import "c:\...\IGUltraGrid2.ocx"
— при компиляции выдает 89 ошибок. Видимо, настройки неправильные. При попытке использовать класс этого контрола в RUNTIME_CLASS,
Здравствуйте, AGo, Вы писали:
AGo>Имею SDI+Doc/View и Grid control(в данном случае IGUltraGrid2.0.ocx), помогите: AGo>Как прикрутить такой контрол AGo> 1. без создания кучи классов. AGo> 2. C возможностью получения из него CWnd; AGo>Пытался использовать #import "c:\...\IGUltraGrid2.ocx" AGo>- при компиляции выдает 89 ошибок. Видимо, настройки неправильные. При попытке использовать класс этого контрола в RUNTIME_CLASS,
AGo>
AGo> соответственно, компилятор, говорит — это не есть пространство имен или класс. Пожалуйста, Помогите.
ActiveX лучше добавлять к проекту через меню(если у тебя студия 7 то это Project->Add Class->MFC->MFC class from ActiveX) и тогда к твоему проекту добавятся классы для пользования этим элементом. Кстати производные от CWnd(если мне память не изменяет). А их то уж проще пареной репы заюзать.
ЗЫ: А если у тя студия 6 то что то вроде этого Project->Add to project->....(дальше не помню)
Здравствуйте, AGo, Вы писали:
AGo>>Пытался использовать #import "c:\...\IGUltraGrid2.ocx"
А вот еще что, если ты используешь импорт без параметров, то твой класс будет в пространстве имен, и так просто к нему не добраться. Может по этому у тебя не получилось.
Как лечить:
1) no_namespace(у дерективы импорта)
2) using namespace ........
Значится так. Сандартный ход при работе с ActiveX в MFC — генерация враппера. Делатеся это следующим образом: Если VC6, то говоришь Project/Add To Project/Componetn and controls/Register components, выбираешь свой излюбленный контрол, корректируешь, ксли надо там имена файлов, и получаешь два файла — .сpp и .h. Которые содержат класик, производный от CWnd и покрывающий твой контрол. Далее раюотаешь с ним, как-будто это простой оконный клас. Вернее можешь так работать =)
Если это VC7, то тут нескольок сложнее.. Я знаб только путь, что делаешь олевый MFC Dialog based проект, в редакторе ресурсов кладешь на диалог свой OCX, потом делаешь Project/Add variable и далее как в VC6 случае. Потом просто добавляешь сгенеренные .cpp и .h в нужный тебе проект.
Здравствуйте, Denwer, Вы писали:
D>Как лечить: D>1) no_namespace(у дерективы импорта) D>2) using namespace ........
Попробовал,
#import "D:\My Docs\Work\C++\Components\IGUltraGrid20.ocx" no_namespace
/* rename_namespace("Sheridan")
using namespace Sheridan;*/
Компилятор выдал тоже самое
Что толку что симпортируешь typelibrary OCX-а? Контейнер к нему лапами сбрался писать? Рез нет, знат все одно будешь юзать MFC-ую оболочку, которая будет тем же враппером. Посмотри на досуге CWnd::GetControlUnknown например, поймешь, что CWnd это не только класик, что к окну цепляестся =)