Page 1 of 1

Tecla BACK en smartphone

PostPosted: Fri Jul 18, 2008 10:10 am
by Salvador
Alguien sabe como se captura la pulsacion de dicha tecla desde un get?

He conseguido anular su funcionalidad con:
Code: Select all  Expand view
DEFINE DIALOG oDlg RESOURCE "DLGPASSWORD" OF oCli:oWnd

   
   REDEFINE SAY ID 101 COLOR CLR_BLACK, CLR_WHITE OF oDlg
   REDEFINE GET oGet VAR oCli:cargo ID 102  OF oDlg;
   ON CHANGE oGet:Assign()   
     
    oGet:bGotFocus         := {|| SetInputmode( oGet:hWnd, IM_AMBIG ) }
   
    oDlg:bKeydown         := {|nkey| msginfo(str(nkey)+"get")}
    oDlg:bKeydown         := {|nkey| msginfo(str(nkey)+"dialogo get")}
    oCli:oWnd:bKeydown := {|nkey| msginfo(str(nkey)+" ventana principal")}
    ACTIVATE DIALOG oDlg;
    ON INIT ( DlgFullScr(oDlg:hwnd), oDlg:Setmenu( MenuPassword( oDlg ) ),;
                 VKBACKDISABLE( oDlg:hWnd ) )
      
HB_FUNC( VKBACKDISABLE ) // deshabilita la tecla back
{
   HWND hMenuBar = (HWND) SHFindMenuBar( (HWND) hb_parnl(1) ); 
      
    LPARAM lp = MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY,SHMBOF_NODEFAULT | SHMBOF_NOTIFY );
   
   SendMessage( hMenuBar, SHCMBM_OVERRIDEKEY, VK_TBACK, lp );
   
   return  ;
}



Después ningun control detecta su pulsación.
Tampoco la clase Tget lo detecta en sus metodos Keydown() y Keychar()
AlgunaIdea ?

Gracias.

PostPosted: Fri Jul 18, 2008 11:39 am
by Antonio Linares
Salvador,

Te refieres a la tecla de borrado a la izquierda ? (flecha a la izquierda encima de enter en un teclado de PC).

Por que necesitas anularla ?

PostPosted: Fri Jul 18, 2008 1:27 pm
by Salvador
Si la misma, en smartphone la tecla [<--]
Por defecto su funcionalidad es volver a la ventana anterior.
Cuando tienes un dialogo con un get, hay que darle la funcionalidad de de la tecla VK_BACK, por eso utilizo la función del post anterior, luego hay que capturar el evento de dicha tecla que será WM_HOTKEY y pasarlo al control que tiene el foco con la función SHSendBackToFocusWindow, para que este la procese.
El problema es que después de programar la tecla, no puedo capturar su evento.