По технологии временного перехвата сообщений от мышки, использованной white_Tigr-ом в отладчике, получилось вот такое сообщение.
Код:
" bmp.fpm" L
// " Images/message_stone.bmp" CREATE-BMP24 MESSAGE.BACK[]
" Images/message_back3.bmp" CREATE-BMP24 MESSAGE.BACK[]
CREATE MESSAGE.RESTORE[] MESSAGE.BACK[] IMAGE-XSIZE MESSAGE.BACK[] IMAGE-YSIZE 1+ * CELLS ALLOT
300 VALUE MESSAGE.X
200 VALUE MESSAGE.Y
['] NOOP VALUE MESSAGE.OLDLMB^
QUAN MESSAGE.CLOSE
: MESSAGE.STORESCR
MESSAGE.BACK[] IMAGE-YSIZE 1+ 0 DO
I MESSAGE.Y + 2048 * MESSAGE.X + CELLS GETSCREEN +
MESSAGE.RESTORE[] I MESSAGE.BACK[] IMAGE-YSIZE * CELLS +
MESSAGE.BACK[] IMAGE-XSIZE MOVE
LOOP
;
: MESSAGE.RESTORESCR
MESSAGE.BACK[] IMAGE-YSIZE 1+ 0 DO
MESSAGE.RESTORE[] I MESSAGE.BACK[] IMAGE-YSIZE * CELLS +
I MESSAGE.Y + 2048 * MESSAGE.X + CELLS GETSCREEN +
MESSAGE.BACK[] IMAGE-XSIZE MOVE
LOOP
;
: MESSAGE.SHOWBACK
MESSAGE.BACK[] MESSAGE.X MESSAGE.Y SHOW-BMP24
;
: MESSAGE.LMB
-1 TO MESSAGE.CLOSE
;
: MESSAGE // STR --
OPAQUE @ SWAP
OPAQUE ON
MESSAGE.STORESCR
MESSAGE.SHOWBACK
MESSAGE.BACK[] IMAGE-XSIZE 2 / OVER COUNT 4 * - MESSAGE.X + 8 /
MESSAGE.Y MESSAGE.BACK[] IMAGE-YSIZE 2 / + 16 / GOTOXY 0xFF00 SETCOLOR PRINT
FROM <MOUSE_LEFT> TO MESSAGE.OLDLMB^
0 TO MESSAGE.CLOSE
USE MESSAGE.LMB AS <MOUSE_LEFT>
BEGIN
$
MESSAGE.CLOSE UNTIL
MESSAGE.RESTORESCR
MESSAGE.OLDLMB^ TO <MOUSE_LEFT>
OPAQUE !
;