Добавлено: 09 Август 2004, 9:49
Hi, коллеги!
Натолкнулся я на такую проблемку: надо создать на экране в позиции, указанной "мышью", контрол box. Нет вопросов,
Control = CREATE(0,CREATE:Box)
Control{PROP:XPos} = MOUSEX()
Control{PROP:YPos} = MOUSEY()
Control{PROP:....
UNHIDE(Control)
Все прекрасно... пока в окне не появляется скролинг! В этом случае MOUSEX()/MOUSEY() выдают мне координаты относительно самого окна, а CREATE их воспринимает относительно его видимой области, и соответственно BOX появляется правее и/или ниже, чем надо... Ладно, берем свойства окна PROP:HScrollPos/PROP:VScrollPos, хэлп нам говорит (весьма скудно), что они выдают что-то типа доли прокрученного экрана из расчета, что весь экран - 255 (или 256?) частей. Пытаюсь делать расчет начальных координат видимой области типа BegX = FullWidth / 255 * 0{PROP:HScrollPos}, где FullWidth - реальная ширина окна со всеми его невидимыми частями... Плохо получается, конечно, ближе к реальной позиции мышки, но достаточно далеко от нее:( Оно и понятно, точность-то 1/255, а размер может быть в тысячах... Может, кто решал такие задачи и знает, как можно получить точное смещение при скролинге? Как-то до сих пор плотно с такими вещами не приходилось сталкиваться
Причем у меня сложилось впечатление, что рисование с помощью BOX или LINE независимо от скролинга проходит как надо, безо всяких смещений, но мне этот вариант не подходит...
Заранее благодарен за конструктивные предложения и указания на возможные ошибки:)
WBR, Igor Timofeev
Написал: ClaList(2)
Натолкнулся я на такую проблемку: надо создать на экране в позиции, указанной "мышью", контрол box. Нет вопросов,
Control = CREATE(0,CREATE:Box)
Control{PROP:XPos} = MOUSEX()
Control{PROP:YPos} = MOUSEY()
Control{PROP:....
UNHIDE(Control)
Все прекрасно... пока в окне не появляется скролинг! В этом случае MOUSEX()/MOUSEY() выдают мне координаты относительно самого окна, а CREATE их воспринимает относительно его видимой области, и соответственно BOX появляется правее и/или ниже, чем надо... Ладно, берем свойства окна PROP:HScrollPos/PROP:VScrollPos, хэлп нам говорит (весьма скудно), что они выдают что-то типа доли прокрученного экрана из расчета, что весь экран - 255 (или 256?) частей. Пытаюсь делать расчет начальных координат видимой области типа BegX = FullWidth / 255 * 0{PROP:HScrollPos}, где FullWidth - реальная ширина окна со всеми его невидимыми частями... Плохо получается, конечно, ближе к реальной позиции мышки, но достаточно далеко от нее:( Оно и понятно, точность-то 1/255, а размер может быть в тысячах... Может, кто решал такие задачи и знает, как можно получить точное смещение при скролинге? Как-то до сих пор плотно с такими вещами не приходилось сталкиваться

Причем у меня сложилось впечатление, что рисование с помощью BOX или LINE независимо от скролинга проходит как надо, безо всяких смещений, но мне этот вариант не подходит...
Заранее благодарен за конструктивные предложения и указания на возможные ошибки:)
WBR, Igor Timofeev
Написал: ClaList(2)