
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. |