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

09/07/2015

Позиционирование AcPane в статусбаре

Я получил недавно вопрос от партнера ADN о позиционировании AcPane и сейчас я покажу пример кода, который выполняет именно эту функцию.

Прежде чем перейти к коду я должен сообщить, что в отличие от предыдущих версий AutoCAD 2015 не позволяет показывать текстовые метки в статусбаре – только иконки. Ранние версии позволяли переключаться между текстовыми метками и иконками. Теперь только иконки.

Я выполнил миграцию очень старого примера по работе с статусбаром, который был в составе ObjectARX SDK 2007 до текущих AutoCAD 2014/15.

Код - C++: [Выделить]
  1. void testPane()
  2. {
  3.   int result;
  4.   AcApDocument *pDoc=acDocManager->curDocument();
  5.   AcApStatusBar* pStatus = acedGetApplicationStatusBar(); 
  6.   if (pStatus) 
  7.   { 
  8.     /* Получаем количество панелей*/
  9.     int iCnt = pStatus->GetPaneCount();
  10.     /* Получаем панель по-умолчанию для добавления нашей панели */
  11.     AcPane* pdfltPane = pStatus->GetDefaultPane(ACSBPANE_APP_ORTHO);
  12.     int index = pStatus->GetIndex(pdfltPane);
  13.     int iStyle = pdfltPane->GetStyle(); 
  14.     CPaneItem* pPaneItem = new CPaneItem();
  15.     result= pPaneItem->SetToolTipText(_T("Тултип иконки панели"));
  16.     pPaneItem->Enable(TRUE);
  17.     result=pPaneItem->SetStyle(iStyle);
  18.     pPaneItem->SetVisible(TRUE);
  19.     HICON hIcon =
  20.       (HICON)::LoadImage(_hdllInstance,
  21.       MAKEINTRESOURCE(IDI_WORLD),
  22.       IMAGE_ICON, 16, 16, 0);
  23.     result=pPaneItem->SetIcon(hIcon);   
  24.     result = pStatus->Insert(index+1, pPaneItem); 
  25.   } 
  26.   pStatus->Update(); 
  27. }

 

Адаптированный под последние версии пример из SDK

Источник: http://adndevblog.typepad.com/autocad/2015/04/positioning-acpane-in-statusbar.html

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=2845

Опубликовано 09.07.2015