Windows 8 под рукой нет и не предвидится в ближайшее время, поэтому проверить сам не могу.Значит нужно передать версию с отладочной печатью пользователю чтобы локализовать ошибку. Или ставить себе виртуальную машину и отлаживать. Но второй вариант может не помочь, т.к. это может быть особенность именно той конфгурации, которая сложилась у пользователя.
Далее из этого окна должно открываться другое диалоговое окно. При попытке открыть его программа выдает ошибку из обработчика ошибок.Если диалог модальный, то отлаживать скорее всего нужно или его конструктор или его метод OnInitDialog.
Может надо компилировать только под ObjectRX 2016?Встречный вопрос. А что в инициализации диалога используются какие-то функции ObjectARX? Если нет, то причем здесь версия ObjectARX?
Windows 8 под рукой нет и не предвидится в ближайшее время, поэтому проверить сам не могу.Тогда это уподобляется лечению по фотографии... Если тестирование в Win8 даже не маячит на горизонте, то самый верный вариант (имхо): в системных требованиях указать, что для работы необходима Win7, не указывая Win8. Можно даже дополнительно акцентировать на этом внимание, мол именно Win7. А если всё же хочешь, чтобы работало и под Win8, то создавай создавай виртуальную машинку, ставь на ней интересующие тебя акады и тестируй, иначе возможно, что это не единственная проблема, которая неожиданно "всплывёт". IDE можно не ставить - удалённую отладку никто не отменял.
без win8 на компьютере проблему не решить.Если это действительно проблема совместимости с Win8, в чем я сильно сомневаюсь.
Если это действительно проблема совместимости с Win8, в чем я сильно сомневаюсь.а что это еще может быть, если одна и та же ARX под таким же автокадом работает на win7 и НЕ работает под win8?
а что это еще может быть, если одна и та же ARX под таким же автокадом работает на win7 и НЕ работает под win8?Вариантов море. Но как правильно сказал Андрей Бушман, это всё гадание на кофейной гуще. Сначала нужно локализовать ошибку в коде, а потом уже разбираться проблема ли это с самим кодом или с Windows8.
Если диалог модальный, то отлаживать скорее всего нужно или его конструктор или его метод OnInitDialog.
А что в инициализации диалога используются какие-то функции ObjectARX? Если нет, то причем здесь версия ObjectARX?Диалог модальный. Конструктор диалога вообще не содержит функций.
как вариант, на втором окне есть какой-то компонент, не совсем стандартный )))Нестандартные компоненты в диалогах не применяю. Делаю это сознательно именно для полной совместимости со всеми версиями операционок и Автокадов.
ну и вторая мысля, которая случайно попала в голову ))) - переключение ресурсов.Перед открытием диалога применяю CAcModuleResourceOverride.
Тогда это уподобляется лечению по фотографии...Ну, есть такие люди, которые лечат по фотографии :)).
А если всё же хочешь, чтобы работало и под Win8, то создавай создавай виртуальную машинку, ставь на ней интересующие тебя акады и тестируй, иначе возможно, что это не единственная проблема, которая неожиданно "всплывёт". IDE можно не ставить - удалённую отладку никто не отменял.К сожалению, я не такой продвинутый в этих делах :(. Так что пока попробую по простому, по крестьянски - найду комп с windows 8.
К сожалению, я не такой продвинутый в этих делах :(. Так что пока попробую по простому, по крестьянски - найду комп с windows 8.Дело твоё. Если вдруг возникнет желание почитать по теме, то здесь (http://bushman-andrey.blogspot.ru/2014/03/blog-post.html)я показывал как это делается (всё достаточно просто).
Если вдруг возникнет желание почитать по теме, то здесь я показывал как это делается (всё достаточно просто).Спасибо за наводку. По правде говоря, давно хотел разобраться с этой темой, но руки не доходили. Ну вот жизнь потихоньку и заставляет.
Перед открытием диалога применяю CAcModuleResourceOverride.Перед открытием какого из диалогов? Я правильно понял, что второй диалог открывается тогда, когда первый диалог не закрыт?
Я правильно понял, что второй диалог открывается тогда, когда первый диалог не закрыт?Главный диалог убирается с экрана через BeginEditorCommand(), потому что при определенных событиях может произойти возврат из дочернего диалога обратно. Потом открывается дочерний диалог. Я всегда сомневался, надо ли при дочернем диалоге применять опять CAcModuleResourceOverride. На всякий случай ставлю, и вроде все работает нормально. Буду Вам признателен, если Вы мне проясните мозги по этому поводу. В документации по ARX ясно про это ничего не написано. Там только в общих чертах. Правда, может, я что и упустил.
Главный диалог убирается с экрана через BeginEditorCommand(), потому что при определенных событиях может произойти возврат из дочернего диалога обратно.Ничего не понял. Этот метод нужен только если идёт обращение к редактору AutoCAD (т.е. например вызывается acedGetPoint(), acedGetAngle() и аналогичные им функции). Если из одного диалога вызывается другой диалог, то этот метод не нужен и более того вреден, т.к. переключает ресурсы на AutoCAD.
Ничего не понял. Этот метод нужен только если идёт обращение к редактору AutoCAD (т.е. например вызывается acedGetPoint(), acedGetAngle() и аналогичные им функции). Если из одного диалога вызывается другой диалог, то этот метод не нужен и более того вреден, т.к. переключает ресурсы на AutoCAD.Я применяю этот метод всегда перед открытием диалогов. Почти во всех моих диалогах может быть обращение к чертежу для получения некоторой информации из выделенных объектов, или если надо получить какой-нибудь размер на чертеже для ввода его в диалог через указание каких-нибудь точек на чертеже. Естественно через все acedGet...() и через acedEntSel(). Поэтому применяю CAcModuleResourceOverride в самом начале диалога один раз. Если я не прав, то скажите, что я неверно делаю. Мои программы с таким подходом работают давно и у меня в конторе и так же в других организациях. Ни от кого рекламаций не получал. Еще раз говорю, что в документации по ARX об этом подробно не написано. К тому же все на басурманском языке. Мог что-то не так понять. Прошу помочь в этом вопросе.
Ну вот, предположительно нашел неточность в коде. Привожу с необходимыми комментариями код функции, которая вызывает дочерний диалог.Надеюсь для компиляции используется VS 2012 SP4 и Platform Toolset = v110
Надеюсь для компиляции используется VS 2012 SP4 и Platform Toolset = v110Именно это и используется.
Теперь остается только отправить новую версию пользователю, чтобы, надеюсь, подтвердить мои предположения.Я бы добавил в тестовую версию отладочную печать в файл, для того чтобы понять в какой момент появляется сообщение об ошибке. Это конечно не полноценная отладка, но позволяет более-менее локализовать источник ошибки.
Буду дальше решать проблему.С такими темпами к Новому Году... :)
С такими темпами к Новому Году... :)Если к Новому году поспею, то это будет очень быстро. Поспешность известно к чему приводит :).
каким-нибудь способомвыше я обозначал "способ".
выше я обозначал "способ".Способ безусловно хорош, но... используемая Вами конфигурация системы:
процессор Core i7в наше кризисное время далеко не всем по-карману. Рискну предположить, что если у человека нет возможности поставить лицензионный 8.1, то и с покупкой такого железа могут быть тоже сложности... материального характера.
объём оперативной памяти - 24 Gb
пять жёстких дисков по 1Tb каждый, из них три внешних (для виртуальных машинок целиком отведён один из дисков, а для резервного копирования - ещё один)
видеокарта NVIDIA GeForce GTX 570
Однако, как я уже писал выше - чаще всего нотик я использую для подключения к серверным виртуальным машинкам, работающем в офисе (тогда всё работает шустро).Ловко у Вас всё устроено! Но боюсь, судя по завлениям автора топика:
Среда мне пока неизвестная - Windows 8.1...и
Windows 8 под рукой нет и не предвидится в ближайшее время...можно сделать предварительный вывод, что у человека нет возможности организовать своё рабочее место подобным образом.
можно сделать предварительный вывод, что у человека нет возможности организовать своё рабочее место подобным образом.Или он пока не общался с IT-шниками на эту тему. Заодно не плохо было бы попытаться поговорить с руководством об оформлении подписки MSDN. Насколько я помню, два года стоят 60 т.р. Многие компании могу себе это позволить. Подписка предоставляет доступ почти ко всем продуктам Майкрософт и ключи к ним. Всё это можно использовать для разработки и тестирования (в итоге выходит дешевле, чем всё покупать по отдельности). Я именно этим и пользуюсь. А vmware сейчас используется практически в каждом IT-отделе, со всеми вытекающими...
LV_ITEM item;
item.iItem = nItem;
item.mask = LVIF_TEXT | LVIF_STATE | LVIF_PARAM;
item.state = 0;
item.stateMask = 0;
item.lParam = (DWORD)pObject;
item.lParam = (LPARAM)pObject;