Compatibilidad con smartphones

Post Reply
Salvador
Posts: 142
Joined: Sun Dec 18, 2005 3:18 pm
Location: España

Compatibilidad con smartphones

Post by Salvador »

Antonio.
Estoy centrado en el desarrollo de aplicaciones para smartphones (sin pantalla táctil). Para ello estoy utilizando todavía la versión 9/07.
Esta versión de Fwppc no ofrece compatibilidad a la hora gestionar controles como combobox o gets en estos dispositivos.
En los gets no se puede borrar el carácter hacia atrás, la tecla de retroceso tiene una funcionalidad diferente en un smartphone.
Los comboboxes hay que sustituirlos por listbox expandibles en los que al pulsar la tecla ENTER se muestran todas las opciones a pantalla completa.

Estas diferencias con una PPC me han forzado ha modificar varias de las clases originales de Fwppc para cambiar el comportamiento de estos controles.
Mi pregunta es si el nuevo build de Fwppc que saldrá próximamente tendrá compatibilidad con estas características de smarthone.

Gracias.
Saludos
Salvador
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Compatibilidad con smartphones

Post by Antonio Linares »

Salvador,

>
Mi pregunta es si el nuevo build de Fwppc que saldrá próximamente tendrá compatibilidad con estas características de smarthone.
>

La realidad es que tenemos muchos más usuarios programando para Pocket PC que para SmartPhones, por lo que el soporte de SmartPhone no está tan desarrollado, pues recibimos menos información y solicitudes para ellos.

>
Estas diferencias con una PPC me han forzado ha modificar varias de las clases originales de Fwppc para cambiar el comportamiento de estos controles.
>

Si publicas tus cambios, ó nos los envias, veremos la forma de integrarlos para la próxima versión. A más usuarios de SmartPhone, mejor soporte ofrecerá FWPPC :-) Gracias!
regards, saludos

Antonio Linares
www.fivetechsoft.com
Salvador
Posts: 142
Joined: Sun Dec 18, 2005 3:18 pm
Location: España

Re: Compatibilidad con smartphones

Post by Salvador »

Una de las principales carencia es la falta de control sobre la tecla BACK.
Un ejemplo de dialogo con un get donde la tecla back se utiliza para borrar el carácter tras el cursor:

Code: Select all

DEFINE DIALOG oDlgPass RESOURCE "DLGPASSWORD" OF  oCli:oWnd
   
   REDEFINE GET oGet VAR oCli:cargo ID 102   OF oDlgPass;
    // activa teclado  Abc 
    oGet:bGotFocus := {|| SendMessage( oGet:hWnd, EM_SETINPUTMODE, 0, EIM_TEXT ) }
    
    ACTIVATE DIALOG oDlgPass;
    ON INIT ( oDlgPass:Setmenu( MenuPassword() ),DlgFullScr( oDlgPass:hwnd ), ;
    OverrideKey( oDlgPass:hWnd, VK_TBACK  ) );
RETURN .t.

HB_FUNC( OVERRIDEKEY ) 
{ 
   HWND hMenuBar = (HWND) SHFindMenuBar( (HWND) hb_parnl(1) );  
   int nKey      = hb_parni(2); 
   LPARAM lp = MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY,SHMBOF_NODEFAULT | SHMBOF_NOTIFY );
   SendMessage( hMenuBar, SHCMBM_OVERRIDEKEY, nKey, lp );
}
Modificaciones para que esto funcione:

Clase tDialog:

Code: Select all

#define VK_TBACK    VK_ESCAPE
#define MOD_KEYUP       0x1000

METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TDialog
   local bStart, lResult
   do case
      case nMsg == WM_INITDIALOG
           return ::Initiate( nWParam, nLParam )
      case nMsg == WM_HOTKEY // hotkeys de smartphone
           
           IF nHiWord( nLParam ) == VK_TBACK //.AND. nLoWord( nLParam ) == 0 
               IF nLoWord( nLParam ) == MOD_KEYUP
                    SendBackToFocusWindow( WM_HOTKEY, nWparam, nLParam )     
                    return 1
               ENDIF
         ENDIF
      return 1
       
      case nMsg == WM_PAINT
           lResult = Super:HandleEvent( nMsg, nWParam, nLParam )
           if ::bStart != nil
              SysRefresh()
              bStart = ::bStart
              ::bStart = nil
              Eval( bStart, Self )
           endif          
           return lResult
      endcase
  
return Super:HandleEvent( nMsg, nWParam, nLParam )
 HB_FUNC( SENDBACKTOFOCUSWINDOW ) 
{ 
  UINT uMsg     = hb_parnl(1);
  WPARAM wParam = hb_parnl(2);
  LPARAM lParam = hb_parnl(3);
  SHSendBackToFocusWindow( uMsg, wParam, lParam );
 }          
La clase TGet el metodo KeyChar():

Code: Select all

do case
    case nKey == VK_BACK       // Already processed at KeyDown
         ::KeyDown( nKey, nFlags ) // smartphone la procesa aqui
         return 0
No se si queda claro. También estoy seguro que debe haber un metodo más elegante de programarlo.
La tecla ENTER (ACTION en smartphone) también tiene una funcionalidad incorrecta, no debe ser utilizada para saltar al siguiente control en el dialogo, sino para activar algunos controles como gets y listbox expandibles.
Espero que pueda ser de utilidad y podais incluirlas para conseguir más compatibilidad con smartphones.
Gracias.
Saludos
Salvador
Salvador
Posts: 142
Joined: Sun Dec 18, 2005 3:18 pm
Location: España

Re: Compatibilidad con smartphones

Post by Salvador »

Saludos
Salvador
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Compatibilidad con smartphones

Post by Antonio Linares »

Salvador,

Muchas gracias! :-)

Vamos a revisarlo y te comentamos,
regards, saludos

Antonio Linares
www.fivetechsoft.com
Salvador
Posts: 142
Joined: Sun Dec 18, 2005 3:18 pm
Location: España

Re: Compatibilidad con smartphones

Post by Salvador »

Antonio.
En que estado se encuentra el nuevo build de FWPPC?.
Saludos
Salvador
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Compatibilidad con smartphones

Post by Antonio Linares »

Salvador,

Estamos trabajando en un nuevo build de FWPPC que va a traer muchas y muy interesantes novedades :-)

Esperamos publicarlo para Mayo. En unos dias daremos mas noticias acerca de su desarrollo, que seguro gustarán a muchos :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply