I found that the Rotate event is 126
I modified dialog.prg so I could do the following in my program.
oDlg:bRotate := { || msginfo( 'Rotate '+alltrim(str(ScreenWidth(),5))+'x'+alltrim(str(ScreenHeight(),5)))}
With windows 7 the width and height vary with rotation and whether the on screen keyboard is displayed and docked. So there could be 4 different width/height values when using Windows 7.
With Windows 10 the width and height vary with screen rotation but does not change when on screen keyboard is displayed so there are only 2 different values.
To test I modified dialog.prg with something like
define GF_ROTATE 126
....
// Added to Class
DATA bRotate
....
// Added to HandleEvent
case nMsg == GF_ROTATE
if ValType( ::bRotate ) == "B"
eval( ::bRotate )
endif
return ::Super:HandleEvent( nMsg, nWParam, nLParam )