Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 26 сен 2017, 20:18

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 19 июл 2017, 18:53 
Не в сети

Сообщения: 64
Откуда: Каменск-Уральский
ОС Windows XP SP1 BB ver 1.5


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 19 июл 2017, 19:28 
Не в сети
Администратор
Аватара пользователя

Сообщения: 237
Откуда: Россия
На Windows XP проверить нет возможности.
Проверил на http://oberoncore.ru/_media/blackbox/bl ... 0121109.7z в своей системе Windows 7/64, тоже сработало (правда пришлось сначала перекомпилировать все 3 модуля Graphics).
Если в методе Restore убрать (закомментировать) всё тело:
Код: "OBERON"
  1. PROCEDURE (v: View) Restore (f: Views.Frame; l, t, r, b: INTEGER);
  2. VAR g: GP.Graphics; pen: GP.Pen;
  3. BEGIN (*
  4.   g := GP.CreateGraphics( f.rider(HostPorts.Rider).port.dc );
  5.   g.Clear(0FFAA9900H);
  6.   pen := GP.CreatePen(0FFBBBB00H, 5.0, 0);
  7.   g.DrawLine(pen, 10, 10, 200, 100); *)
  8. END Restore;

то по запуску Test1 должно появляться пустое окно. Оно появляется?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 19 июл 2017, 19:57 
Не в сети

Сообщения: 64
Откуда: Каменск-Уральский
нет не появляется. Вот я нашёл по теме:
Код: "OBERON"
  1. include <gdiplus.h>
  2.  
  3. HRESULT Load(LPCTSTR szFile)
  4. {
  5. USES_CONVERSION;
  6. // Create new Gdiplus::Image object
  7. m_pImage = new Gdiplus::Image(T2CW(szFile));
  8. ATLASSERT(m_pImage);
  9.  
  10. // Check for success
  11. if (Gdiplus::Ok == m_pImage->GetLastStatus())
  12. return S_OK;
  13.  
  14. // Cleanup on failure
  15. Destroy();
  16. return E_FAIL;
  17. }
  18.  
  19. HRESULT DrawImg(HDC hdc, RECT& rcBounds)
  20. {
  21. if (m_pImage)
  22. {
  23. // Create Gdiplus::Graphics object from HDC
  24. Gdiplus::Graphics graphics(hdc);
  25. // Create Gdiplus::Rect object from RECT
  26. Gdiplus::Rect rc(rcBounds.left, rcBounds.top, rcBounds.right, rcBounds.bottom);
  27.  
  28. // Draw the image
  29. return Gdiplus::Ok == graphics.DrawImage(
  30. m_pImage, // [in] Gdiplus::Image object
  31. rc // [in] Position and dimensions
  32. ) ? S_OK : E_FAIL;
  33. }
  34.  
  35. return E_UNEXPECTED;
  36. }

как этот код на Компонентном Паскале будет выглядеть?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 19 июл 2017, 20:11 
Не в сети
Администратор
Аватара пользователя

Сообщения: 237
Откуда: Россия
Если даже пустое окно не появляется, то GDI+ тут ни при чём, а какая-то проблема в подсистеме Views.
Примеры Help\Examples\Simple Views действуют? Например, ObxPatterns рисует ли окно с концентрическими прямоугольниками?
Система ББ оригинальная или может быть какие-то подсистемы из нее удалял, чтобы построить свое приложение?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 20 июл 2017, 06:25 
Не в сети

Сообщения: 64
Откуда: Каменск-Уральский
Цитата:
Примеры Help\Examples\Simple Views действуют? Например, ObxPatterns рисует ли окно с концентрическими прямоугольниками?

Примеры действуют! Похоже проблема с ОС. Сейчас посмотрю на другом компьютере...


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 20 июл 2017, 06:33 
Не в сети

Сообщения: 64
Откуда: Каменск-Уральский
Разобрался, BB и вправду был пофикшенный.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Подскажите элемент управления
СообщениеДобавлено: 20 июл 2017, 10:39 
Не в сети
Администратор
Аватара пользователя

Сообщения: 237
Откуда: Россия
Len писал(а):
Как этот код на Компонентном Паскале будет выглядеть?
В GDI+ более 600 функций (так называемых flat API). Компания Microsoft рекомендует использовать разработанную ею ООП-обертку для С++, а про flat API GDI+ дает ограниченные сведения. Обёрткой, конечно, пользоваться легче, потому что она скрывает излишние технические детали. Но по этой же причине, разглядывая примеры на С++, трудно понять как их переделать под Оберон\КП: нужно не только понять, что делают обёрткой, но и залезать в саму обёртку, чтобы понять, что делает она.
Обёрток GDI+ для Оберона я не видел. Есть обертки для Паскаля, возможно в них легче разобраться. Можно сравнить с примерами из других языков. Вот пример для freebasic: http://free-basic.ru/gdiplusgfx.html. Здесь тоже используется обёртка, но более прозрачная. Например, загрузка изображения из файла png выполняется функцией Load_imageA, которая явно расписана, а не скрыта внутри какого-то метода обертки.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Тех.поддержка phpBB