Page 1 of 1

Difference between mouse and keyboard

Posted: Thu Nov 12, 2009 8:08 am
by MarcoBoschi
Hi,
please compile this little sample program.

Code: Select all

#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg

    LOCAL cVar := SPACE(10)

    CGETFILE( "*.*", "Select a file" )

    DEFINE DIALOG oDlg

    @ 1, 1 GET cVar

    @ 2, 1 BUTTON "Button1"
    @ 3, 1 BUTTON "Button2"

    ACTIVATE DIALOG oDlg

    RETURN NIL
First time use keyboard to select file into CGETFILE dialog ( you can use mouse and press keyboard just one time)

When you return to dialog oDlg and you change focus into Button1 everything works fine.

Image

Second time use only mouse (please do not touch keyboard)
When Button1 gets focus it does not appear in the right way
Image

Any suggestions?
Marco

Re: Difference between mouse and keyboard

Posted: Fri Nov 13, 2009 10:02 am
by Antonio Linares
Marco,

If you press "Alt" then the dotted line will appear.

Somehow, Windows seems not to show it if only using the mouse.

Re: Difference between mouse and keyboard

Posted: Sat Nov 14, 2009 7:17 am
by MarcoBoschi
Antonio,
the solution is to simulate an "Alt" press?
Thanks

Re: Difference between mouse and keyboard

Posted: Sat Nov 14, 2009 9:34 am
by Antonio Linares
Marco,

The problem is that we can not simulate an "Alt" key :(

We are trying many different ways, but no success. We just need a simple "Alt" simulation there...

Code: Select all

#include "Fivewin.ch"

#define WM_SYSCOMMAND   0x0112
#define SC_KEYMENU       61696

FUNCTION MAIN()

    LOCAL oDlg, oBtn
    LOCAL cVar := SPACE(10), oGet

    DEFINE DIALOG oDlg

    @ 1, 1 GET oGet VAR cVar

    @ 2, 1 BUTTON oBtn PROMPT "Button1"
    oBtn:bGotFocus = { || oBtn:PostMsg( WM_SYSCOMMAND, SC_KEYMENU ) }
    
    @ 3, 1 BUTTON "Button2"

    ACTIVATE DIALOG oDlg CENTER

    RETURN NIL
 

Code: Select all

#include "Fivewin.ch"

FUNCTION MAIN()

    LOCAL oDlg, oBtn
    LOCAL cVar := SPACE(10), oGet

    DEFINE DIALOG oDlg

    @ 1, 1 GET oGet VAR cVar

    @ 2, 1 BUTTON oBtn PROMPT "Button1"
    oBtn:bGotFocus = { || __KeyBoard( Chr( ... ) ) }
    
    @ 3, 1 BUTTON "Button2"

    ACTIVATE DIALOG oDlg CENTER

    RETURN NIL
 

Re: Difference between mouse and keyboard

Posted: Sat Nov 14, 2009 12:16 pm
by Rossine
Hi,

See if this works to you :

Code: Select all

#include "Fivewin.ch"

#define VK_LMENU  164
#define VK_A       65

FUNCTION MAIN()

    LOCAL oDlg

    LOCAL cVar := SPACE(10)

    CGETFILE( "*.*", "Select a file" )

    DEFINE DIALOG oDlg

    @ 1, 1 GET cVar

    @ 2, 1 BUTTON oBtn PROMPT "Button1"
    oBtn:bGotFocus = { || SetStateKey( VK_LMENU, .T. ), ;
                          SetStateKey( VK_A, .T. ), ;
                          SetStateKey( VK_LMENU, .F. ) }
   
    @ 3, 1 BUTTON "Button2"

    ACTIVATE DIALOG oDlg

RETURN NIL

#pragma begindump

#include <windows.h>
#include <hbapi.h>

HB_FUNC( SETSTATEKEY )
{
  if( hb_parl(2) )
      keybd_event( hb_parvnl(1), 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 );
  else
      keybd_event( hb_parvnl(1), 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}

#pragma enddump

 

Re: Difference between mouse and keyboard

Posted: Sat Nov 14, 2009 12:21 pm
by Antonio Linares
Rossine,

Very good! :-)

many thanks!

Re: Difference between mouse and keyboard

Posted: Mon Nov 16, 2009 2:19 am
by hua
When compiled, I got an error message Unresolved external '_hb_parvnl'. What lib am I missing?

Re: Difference between mouse and keyboard

Posted: Mon Nov 16, 2009 10:07 am
by Antonio Linares
Hua,

Please change hb_parvnl() with hb_parnl() calls

Re: Difference between mouse and keyboard

Posted: Tue Nov 17, 2009 1:49 am
by hua
Antonio Linares wrote:Please change hb_parvnl() with hb_parnl() calls
It worked. Thanks.

Re: Difference between mouse and keyboard

Posted: Mon Nov 23, 2009 4:49 pm
by MarcoBoschi
Hello,
just now I read your answers.
Thanks a lot.
I've tried it but if I press return key in the field it does not work.
It works only if I press TAB button to exit get field.
Anyway, thanks a lot

marco