Роман М. писал(а):
По идее, если нужно снять снимок какого-то окна ББ, то это вроде делается средствами фреймворка.
Да, если нужен снимок окна, то есть стандартный модуль HostBitmaps для этого.
Вот так когда-то делал для сохранения графиков в BMP.
Код:
   PROCEDURE SaveRastr*;
      VAR res: INTEGER; bmp: Converters.Converter; path: Files.Locator; name: Files.Name;
         c: Containers.Controller; v: Views.View;
   BEGIN
      c := Containers.Focus(); (* Берем контейнер, который находится в фокусе *)
      IF c # NIL THEN (* Если какой-то контейнер был в фокусе, *)
         v := c.ThisView() (* то берем отображение этого контейнера *)
         path := Files.dir.This(""); (* Задаем путь куда сохранять *)
         name := "Новый график"; (* название файла *)
         bmp := Converters.list; (* зугружаем список доступных конвертеров *)
         WHILE (bmp # NIL) & (bmp.fileType # "bmp") DO bmp := bmp.next END; (* идем по списку пока не найдем нужный *)
         Views.Register(HostBitmaps.ViewToBitmap(v, 24), Views.ask, path, name, bmp, res) (* Сохраняем отображение с заданными выше параметрами *)
      END
   END SaveRastr;