Тема: Активный viewport

В пространстве листа имею несколько viewport'ов, как определить какой из них активный (в который например входили по двойному клику)?
Фукнция acedGetCurViewportObjectId(), всегда возвращает один и тот-же Viewport с number==1

Re: Активный viewport

> Евгений
Попробуй такой вариант:

static void GetHandleOfActiveViewport(void)
{
  resbuf rbtl = {NULL,RTSHORT,0}; acedGetVar(_T("TILEMODE"),&rbtl);
  if (rbtl.resval.rint == 1) {
    acutPrintf(_T("\nМы в пространстве модели!"));
    return;
  }
  resbuf rbcv = {NULL,RTSHORT,0}; acedGetVar(_T("CVPORT"),&rbcv);
  if (rbcv.resval.rint == 1) {
    acutPrintf(_T("\nМы не в viewport\'е!"));
    return;
  }
  int cvport = rbcv.resval.rint - 1;
  AcApLayoutManager *lm = (AcApLayoutManager *) acdbHostApplicationServices()->layoutManager();
  if (!lm) return;
  const ACHAR *ctab = lm->findActiveTab();
  AcDbLayout  *clay = lm->findLayoutNamed(ctab,TRUE);
  if (clay) {
    AcDbObjectIdArray ids = clay->getViewportArray();
    clay->close();
    acutPrintf(_T("\nВсего viewport\'ов = %d"),ids.length()-1);
    AcDbHandle h = ids[cvport].handle();
    ACHAR buf[256]; h.getIntoAsciiBuffer(buf);
    acutPrintf(_T("\nМетка активного viewport\'а = %s"),buf);
  }
}

Re: Активный viewport

Спасибо! то что надо