Здраствуйте Александр!

> -- Цитата:
> Что касается цикла обработки сообщений, то он сделан не во всех местах очень хорошо : )) (покосился на info21, но продолжил рассказ). Например, 100% загрузка процессора берется из того факта, что всякий View, если он хочет отслеживать положение мыши (например, когда вы выделяете блок текста, нажав кнопку) вынужден организовывать цикл опроса мыши и клавиатуры, постоянно вызывая Rider.Input. Этот способ официально рекомендуется в документации разработчика. Видимо, это единственный способ реализовать перехват всех сообщений от мыши, так уж устроен фреймворк. Выглядит это иногда вот так (циатата из HostMechanisms):Подобных циклов немало разбросано по исходникам BlackBox (более десятка). В Delphi VCL при организации подобного цикла всегда есть возможноть "дать дышать" всем другим объектам и процессам, вызывая главный цикл обработки сообщений: Application.ProcessMessages. В BlackBox такой возможности не предусмотрено. Более того, если внимательно посмотреть на HostMenus.Loop, то станет очевидно, что процедура не рассчитана на повторное вхождение. Потому и не опубликована. Кстати, в официальной почтовой рассылке уже не один раз за прошедший год пролетали "рецепты по разморозке" в виде небольших циклов обработки сообщений Windows. Естественно, ни о какой платформенной независимости тут речи вести не приходится.

Обычно обработку реализуют так (схема):

WM_LBUTTONDOWN:
GetCapture; (подготовка к обработке)
WM_MOUSEMOVE:
(обработка, например выделяем текст)
WM_MOUSEUP:
ReleaseCapture;(конец обработки)

Для этого у нас почти все есть
Controllers.TrackMsg  - возникает когда нажали мышь
Controllers.PollCursorMsg  - возникает при движении мыши
ввести еще сообщение типа(по крайней мере в документации я не нашел чего-то подобного)
Controllers.MouseUpMsg возникает когда мышь отпущена
И тогда не надо будет писать
REPEAT f.Input(x, y, m, isDown) UNTIL ~isDown;

Если такой способ обработки в приложении остается на совести программиста, то
из ядра Blackbox такие вещи надо выкинуть однозначно (если это возможно). Необходимо критически пересмотреть обработку сообщений в ядре Blackbox. Тогда и процессор не будет загружаться на 100% и другие задачи замирать не будут, только от того что нажата мышь.
Ввести все-таки функцию (например, включить ее в модуль System\Windows) типа PROCEDURE ProcessMessages: BOOLEAN,
которую программист мог-бы вызывать на свое усмотрение (все зависит от задачи которую он решает).
переносимость не пострадает, потому как на других платформах ProcessMessages может быть пустышкой.