Тема: Command

Новый вопрос — новая тема. Ну раз так тогда начали...
Как временно скрыть от юзера окно?
Нужно чтоб при активации моеи команды нап
"Command: _myArxCommand " окно скрылся, а еше лучше если окно будет видно но вводимые команды не будут выполнятся.
спасибо за вниманее.

Re: Command

class SuppressOutput : public AcDbHostApplicationServices
{
public:
  SuppressOutput() {
    m_pOld = acdbHostApplicationServices();
    acdbSetHostApplicationServices(this);
    setWorkingGlobals(m_pOld->workingGlobals());
    setWorkingDatabase(m_pOld->workingDatabase());
  }
  virtual ~SuppressOutput()
  {
    acdbSetHostApplicationServices(m_pOld);
    setWorkingGlobals(m_pOld->workingGlobals());
    setWorkingDatabase( m_pOld->workingDatabase() );
  }
  virtual Acad::ErrorStatus findFile(
    ACHAR* pcFullPathOut,
    int   nBufferLength,
    const ACHAR* pcFilename,
    AcDbDatabase * pDb,
    AcDbHostApplicationServices::FindFileHint hint )
  {
    return Acad::eOk;
  }
  virtual AcadInternalServices* acadInternalServices()
  {
    return m_pOld->acadInternalServices();
  }
  virtual const ProdIdCode prodcode() { return m_pOld->prodcode();}
  virtual void displayChar(ACHAR c) const { return; }
  virtual void displayString(const ACHAR* string, int count) const { return; }
private:
  AcDbHostApplicationServices *m_pOld;
};

А потом в своем коде:

...
{
  SuppressOutput s;
  //
  // Здесь твой код
  // acutPrintf(_T("\nПроверка вывода!");
}
...

Пробуй.

Re: Command

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

Re: Command

спасибо.
попрововал.
но не работает.
точнее блокируются acutPtintf, acedCommand но при вводе вручную команды исполняются.
думаю лучше скрыть Command: окно вообше.
может подскажете, как?

Re: Command

> rastiapa
Я видимо сначала не понял задачу, т.к. ты ее описал недостаточно хорошо.
Если тебе нужно заблокировать ввод с клавиатуры в командную строку, то нужно или писать реактор реактора AutoCAD (наследник от AcEditorReactor) или воспользуйся хуком (acedRegisterFilterWinMsg)

Re: Command

спасибо.
заблорировал с помошю acedRegisterFilterWinMsg.
и все же можно ли скрыть Command окно?

Re: Command

Теоретически можно:

    CWnd *cmdline = acedGetAcadDockCmdLine();
    cmdline->ShowWindow(SW_HIDE);

А смысл? Еще нужно отключить динамически ввод, т.к. команду можно ввести и в нем.

Re: Command

спасибо.
учту.