Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: begiz от 07-07-2015, 13:55:00

Название: блокировка изменение системных переменных
Отправлено: begiz от 07-07-2015, 13:55:00
Добрый день.
Столкнулся с такой проблемой.
Необходимо заблокировать отклиучение привиазки к гриду.
Вроде все просто.
Код - C++ [Выбрать]
  1. static bool changed = false;
  2.  
  3. void CEdReactor::sysVarChanged(const ACHAR* varName, Adesk::Boolean success)
  4. {
  5.         //CEdReactor::sysVarChanged(varName,success);
  6.         if(_tcscmp(varName,_T("SNAPMODE"))==0) {
  7.                 if(!changed)
  8.                 {
  9.                         resbuf rb;
  10.                         rb.restype = RTSHORT;
  11.                         rb.resval.rint = 1;
  12.                         acedSetVar(_T("SNAPMODE"), &rb);
  13.                         changed = true;
  14.                 }
  15.                 else changed = false;  
  16.         }
  17. }
Но почему то не работает, т.е. вылетает на строчке acedSetVar.

Система:
Acad 2013 64-бит Eng.
Название: Re: блокировка изменение системных переменных
Отправлено: Николай Горлов от 07-07-2015, 16:12:57
Код - C++ [Выбрать]
  1. if(_tcscmp(varName,_T("SNAPMODE"))==0)
  2. {
  3.         if(!changed)
  4.         {
  5.                 changed = true; // вынести вверх
  6.                 resbuf rb;
  7.                 rb.restype = RTSHORT;
  8.                 rb.resval.rint = 1;
  9.                 acedSetVar(_T("SNAPMODE"), &rb);
  10.         }
  11.         else changed = false;
  12. }
  13. AcEditorReactor::sysVarChanged(varName, success); // тоже не помешает
  14.  

дебагер спасет мир )))
Название: Re: блокировка изменение системных переменных
Отправлено: begiz от 07-07-2015, 16:21:28
Стыдно стыдно стыдно!!!
Перегрелся я походу :)
Да, все работаэт, спасибо!!