(изменено: Тарас Яджак, 10 января 2012г. 15:02:25)

Тема: applyPartialUndo на х64

Суть вопроса в том что имею я некий класс наследуемый от AcDbEntity.
В нем есть перегружены все необходимые виртуальные методы.
В том числе и Acad::ErrorStatus CMyEnt::applyPartialUndo(AcDbDwgFiler* pInUndoFiler, AcRxClass* classObj)

Acad::ErrorStatus CMyEnt::applyPartialUndo(AcDbDwgFiler* pInUndoFiler, AcRxClass* classObj)
{    
    if(classObj==NULL) return Acad::eOk;
    if(classObj != CMyEnt::desc())  return AcDbEntity::applyPartialUndo(pInUndoFiler, classObj);

    ...
    return Acad::eOk;
}

Проблема:
Когда я пытаюсь изменяю заблокированный объект(в моей программе возможно блокировать объекты то есть делать их не редактируемыми) и нажатия Ctrl+Z то на 32-х разрядной системе все хорошо classObj = NULL(или 0х00000000), но на х64 classObj = 0х0000000100000000.
Почему? Может я неверно делаю проверку на валидность?

PS: В конечном итоге автокад падает

Re: applyPartialUndo на х64

Тарас Яджак пишет:

Почему? Может я неверно делаю проверку на валидность?

Угу. Ты же сравниваешь указатели.

Re: applyPartialUndo на х64

Если вы про

if(classObj != CMyEnt::desc())

то автодеск(http://docs.autodesk.com) говорит что так нужно делать с сайта

if (myclass::desc() != pClassObj)
    return parentClass::applyPartialUndo(pUndoFiler, pClassObj);