Page 1 of 1

Block bLostFocus() de Windows o Dialog

Posted: Mon Jul 31, 2006 12:29 pm
by jose_murugosa
El código que sigue, debería poner la ventana siempre visible y no debería perder foco nunca a menos que se cerrara.
Si bien queda siempre visible, el block bLostFocus que debería volver el foco a la ventana no lo hace, probé con GotFocus y SetFocus y es lo mismo, parece que ignora el block.
Alguien me puede ayudar? aquí va el código:

#define SWP_NOSIZE 0x0001
#define SWP_NOMOVE 0x0002
#define SWP_NOACTIVATE 0x0010
#define SWP_SHOWWINDOW 0x0040
#define HWND_TOPMOST -1
//
#include "FiveWin.ch"

FUNCTION MAIN
LOCAL oDlg, oGet, oGet2, oBtn, Capt:=Space(10), Capt2:=" "

DEFINE DIALOG oDlg RESOURCE "Dialogo" Title "Captura"
REDEFINE GET oGet VAR Capt ID 101 OF oDlg;
PICTURE "!!!!!!!!!!" VALID MsgInfo(Capt)
oGet:bLostFocus:={||(oGet:SetText:="", oGet:SetFocus() )}
ACTIVATE DIALOG oDlg CENTER ON INIT ( WindowTopMost( oDlg ), ;
oDlg:bLostFocus := { || oDlg:SetFocus() } ) //esta linea

RETURN NIL

FUNCTION WindowTopMost( oWnd )
SetWindowPos( oWnd:hWnd, HWND_TOPMOST,;
0, 0, 0, 0, ;
SWP_NOMOVE |;
SWP_NOSIZE |;
SWP_SHOWWINDOW |;
SWP_NOACTIVATE )
RETURN NIL