Тема: New/Open

как перехватить сообшения при откритии нового документа?
может ссылку подбросете если такои вопрос уже прозвучал.

Re: New/Open

Создать реактор

// acrxEntryPoint.cpp //
...
[b]
class CReactor : public AcEditorReactor {
protected:
    bool mbAutoInitAndRelease;
public:
    CReactor(const bool autoInitAndRelease =true);
    virtual ~CReactor();
    virtual void Attach();
    virtual void Detach();
    virtual void commandWillStart(const ACHAR* cmdStr);
};
static CReactor *pReact;
[/b]
...
virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt)
{
  retCode =AcRxArxApp::On_kInitAppMsg (pkt);
  [b]if (!pReact)pReact = new CReactor();[/b]
  return (retCode);
}
virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt)
{    
  [b]if (pReact) delete pReact;[/b]
  AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt);
  return (retCode);    
}
...
}; // закончился класс от AcRxArxApp
[b]
CReactor::CReactor(const bool autoInitAndRelease) : AcEditorReactor(), mbAutoInitAndRelease(autoInitAndRelease)
{
  if(autoInitAndRelease)
  {
    if (acedEditor) acedEditor->addReactor(this);
    else mbAutoInitAndRelease = false ;
  }
}
CReactor::~CReactor()
{
  Detach();
}
void CReactor::Attach ()
{
  Detach();
  if (!mbAutoInitAndRelease)
  {
    if (acedEditor)
    {
       acedEditor->addReactor(this);
       mbAutoInitAndRelease = true;
    }
  }
}
void CReactor::Detach()
{
  if (mbAutoInitAndRelease)
  {
    if (acedEditor)
    {
      acedEditor->removeReactor(this);
      mbAutoInitAndRelease = false;
    }
  }
}
// а тут перехват начала любой команды
void CReactor::commandWillStart(const ACHAR * cmdStr)
{
    if(strstr(cmdStr, _T("NEW")))
    {
        // именно здесь пиши что хочешь
    }
    AcEditorReactor::commandWillStart(cmdStr);
}
[/b]
IMPLEMENT_ARX_ENTRYPOINT(CPlanningApp)

Вставляй только то что жирным и туда куда нужно :)
И все будет работать

Re: New/Open

спасибо, шас попробую