Page 1 of 1

Client to Screen

Posted: Tue Apr 08, 2008 9:39 am
by nageswaragunupudi
We often find this kind of correction to the coordinates returned by ClientToScreen and SceenToClient functions

Code: Select all

      aPoint = ClientToScreen( ::hWnd, aPoint )
      if aPoint[ 1 ] > 32768
         aPoint[ 1 ] -= 65535
      endif
      if aPoint[ 2 ] > 32768
         aPoint[ 2 ] -= 65535
      endif
It is also advised in these forums to use the correction after call to these functions. Why can't the correction be built into the FWH functions ClientToScreen and SceenToClient, so that we do not have to write the extra repetitive code ? Incorporating these corrections in the main code does not break any existing code.

Posted: Tue Apr 08, 2008 1:29 pm
by Antonio Linares
NageswaraRao,

In those circunstances we need a "short" (16 bits) signed value from PRG level.

Maybe we could try to change:

Code: Select all

   hb_reta( 2 );
   hb_stornl( pt.x, -1, 2 );
   hb_stornl( pt.y, -1, 1 )
into:

Code: Select all

   hb_reta( 2 );
   hb_storni( ( short int ) pt.x, -1, 2 );
   hb_storni( ( short int ) pt.y, -1, 1 )