Llamar a _Execute() desde un hilo diferente (Christof Wollenhaupt) Traducción [1]

Enviado por : amby en 26 Ene, 2007 - 04:00
ART [2]
Christof Wollenhaupt soluciona el problema de que VFP ejecute código originado en un hilo diferente.

Llamar a _Execute() desde un hilo diferente

Artículo original: Calling _Execute() from a different thread
http://www.foxpert.com/KnowlBits_200609_6.htm [3]
Autor: Christof Wollenhaupt (http://www.foxpert.com/knowlbits.htm [4])
Traducido por: Ana María Bisbé York (amby@telefonica.net [5])
Para: PortalFox (http://www.portalfox.com [6])


Usted puede llamar a la función API _EXECUTE únicamente desde dentro del mismo hilo que emplea Visual FoxPro para cargar la librería. Llamar la función desde un hilo diferente causa problemas a Visual FoxPro. Si necesita ejecutar código originado en un hilo diferente, puede utilizar en su lugar, SendMessage. He aquí el código para la FLL. Ante todo, necesita una variable que almacene el controlador de ventana:

HWND hWndMain = NULL;

Luego, necesita una función que llame una aplicación VFP al controlador de registro

void FLL_Register( ParamBlk *Param )
{
  hWndMain = (HWND) (Param->p[0].val.ev_long);
}

Finalmente siempre que desee utilizar _Execute(), utilice en su lugar, código como este

LRESULT Result;
Result = SendMessage( hWndMain, WM_USER, 0, 0 );

He aquí el código que carga la FLL y finaliza el mensaje

Set Library To Sample.FLL Additive
BindEvent( _VFP.Hwnd, 0x400, This, "WndProc" )
FLL_REGISTER( _VFP.Hwnd )

La rutina WdnProc tiene la siguiente apariencia

Procedure WndProc( tnHwnd, tnMsg, tnWParam, tnLParam )
  Do case
    Case m.tnMsg == 0x400
      * Haga algo
      Return 2
  EndCase
EndProc

El valor devuelto (en este ejemplo es 2) se devuelve a la FLL en el valor Result. Similar a _Execute, la FLL está suspendida hasta que el programa VFP procese el mensaje.


Llamar a _Execute() desde un hilo diferente (Christof Wollenhaupt) Traducción | Entrar/Crear una cuenta [7] | 0 Comentarios
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.
Enlaces
  [1] http://www.portalfox.com/index.php?name=News&file=article&sid=2332
  [2] http://www.portalfox.com/index.php?name=News&catid=&topic=2
  [3] http://www.foxpert.com/KnowlBits_200609_6.htm
  [4] http://www.foxpert.com/knowlbits.htm
  [5] http://www.portalfox.com/mailto:amby@telefonica.net
  [6] http://www.portalfox.com
  [7] http://www.portalfox.com/user.php