In a message dated 29/11/02 11:43:17 GMT Standard Time, [EMAIL PROTECTED] writes:


> Produce the little explanatory windows after the pointer has rested on
> a loose item for more than a certain time, as in QD.

yu can also do that with wm.rptrt (vector $78), which allows a
timeout (much easier!) This is the way FiFi handles the small help
windows.


(...)
>  WM.RPTR very kindly draws and undraws borders on
> items as the pointer moves over them. By using iop.rptr, a programmer
> forgos this facility and has to do it himself.

... which will result in a loop similar to that introduced by wm.rptr(t).


> 1. The manual (page 86) says that  WM.DRBDR is accessed by vector $68.
> In fact it should be $44.
yes, $68 is wm.rname


2. The routine actually seems to perform the
> same operation for both drawing and undrawing so that the MS bit of
> WS_CITEM seems not to be used. Is this true? The operation performed
> is to draw a border of colour WS_CIPAP in the status area. This has to
> be set by the programmer to the highlight colour for a draw and to the
> window's paper colour for undraw. After this has been done the routine
> checks that in fact the pointer is somewhere in the program's window.
> Fine for drawing - the pointer must be there. Bad for undrawing if the
> pointer is moved out of the item and out of the program's area
> altogether before the PE software notices. I solve that problem by
> ignoring an "out of range" error on an undraw.

Doesn't that mean the the item stays marked as current?



No.  WM.DRBDR draws/undraws the border first. Then it checks whether the pointer is in or out of the program's window area.

w
m.rptr(t) checks whether the pointer is out of the window, and, if
so, clears the curent item.

Wolfgang





In fact I wasn't aware of wm.rptrt until Jim Hunkins reported that it didn't work in C68.

But I still don't see how you tell that wm.rptrt has timed out while waiting on a loose item (or anywhere for that matter). If you check when timeout has occurred (incomplete) and look to see that you are now on a loose item, do you check that you were there when you called wm.rptrt? Even then what's to prevent you moving the pointer back to where it was just before timeout? Do you assume that if the position is exactly what it was at exit as at entry no movement has taken place?

As to the use of iop.rptr, this does not put lines around any item and take them, away. wm.rptr(t) does but you can't mix both.

It would certainly be nicer if you could use wm.rptrt than iop.rptr. However, does that also deal with "dragging"?

George

Reply via email to