The simple program below prompts for a number, and then prints this out when one selects the Test menu button. With %co[check_on_focus_loss] it is impossible to change the number. However, I have applications similar to this in which I need to use check_on_focus_loss to prevent invalid entries, and want the user to be able to then go to a menu item (or use an accelerator key). Surely activating a menu item represents a loss of focus.
MODULE m
INTEGER, PUBLIC :: n=1
END MODULE m
!
WINAPP
PROGRAM p1
USE m
IMPLICIT NONE
INTEGER :: iw
INTEGER, EXTERNAL :: f
!
iw=winio@('%mn[Test]&',f)
iw=winio@('%co[check_on_focus_loss]Input: %dd%5rd',1,n)
END PROGRAM p1
!
FUNCTION f()
USE m
IMPLICIT NONE
INTEGER :: f
WRITE (UNIT=*,FMT=*) n
f=1
END FUNCTION f