AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / Gestión de lenguajes externos / Lenguaje C
  • Presentación
  • Implementación
  • 1. Incluyendo los archivos de la interfaz C de WINDEV
  • 2. Incluyendo las declaraciones HFSQL
  • Declaración e inicialización
  • 1. Declarar el contexto de HyperFileSQL y los búferes de trabajo de cada archivo:
  • Ejecutar códigos WINDEV desde el idioma externo
  • 1. Código de inicialización del proyecto WINDEV
  • 2. Llamar a un código de WLanguage
  • 3. Recuperación de los eventos lanzados en las ventanas WINDEV
  • Finalización de la aplicación
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Vamos a llamar a los elementos desarrollados en WINDEV (proyecto, ventanas, ... análisis) del lenguaje C. Este sistema se basa en el uso de las funciones declaradas en los archivos.h,.c y.cpp de WINDEV. El código WLanguage utilizado desde el lenguaje externo se compilará dinámicamente y se ejecutará durante la llamada.
Este modo se ilustra en:
  • el VC60.dsp (en formato Visual C++ 6) suministrado en el subdirectorio "ExternalLanguages\C" del directorio instalación de WINDEV.
  • el proyecto BC5.0.IDE (en formato Borland C 5) suministrado en el subdirectorio "ExternalLanguages\C" del directorio instalación de WINDEV.
Observación: otros modos disponibles para la programación en lenguaje externo. Para obtener más información, consulte Los modos de programación de los lenguajes externos
Implementación

1. Incluyendo los archivos de la interfaz C de WINDEV

Si está utilizando una base de datos en su aplicación, el primer paso consiste en generar su análisis. En la description de este análisis, especifique el lenguaje de programación utilizado así como el directorio que contendrá los archivos fuente.
Mediante la generación se genera un esqueleto de programa en el idioma externo seleccionado (por ejemplo, C).. Esta operación también creará el archivo.h (ver abajo) necesario para utilizar sus archivos de datos.
Los siguientes archivos deben ser incluidos en un proyecto C para poder llamar a la interfaz C de WINDEV en este segundo método:
Las dos líneas siguientes deben encontrarse en el código del archivo principal.c de su proyecto C:
# include "WDExtern.h" // WINDEV language and objects
# include "HFContext.h" // HFSQL database
Estas líneas le permiten recuperar las declaraciones mínimas necesarias para utilizar la interfase externa.. Observará que los archivos.h que describen la estructura de los archivos serán generados automáticamente por WINDEV al generar el análisis.

2. Incluyendo las declaraciones HFSQL

Se debe agregar una inclusión (#include) por cada archivo de datos declarado en el análisis del proyecto WINDEV. Las declaraciones de los ficheros de datos se incluyen en el fichero cuya extensión es.h (este fichero sustituye al.wdr creado por la versión anterior de WINDEV).
Por ejemplo, en el proyecto Vc60.dsp (proporcionado con WINDEV en el directorio "ExternalLanguages"), se utiliza la siguiente Line para gestionar los ficheros City y State:
#include "WD External language.h"
Declaración e inicialización

1. Declarar el contexto de HyperFileSQL y los búferes de trabajo de cada archivo:

Si la aplicación debe gestionar archivos de datos, debe declararse un contexto de trabajo de HyperFileSQL, así como un búfer para cada archivo de datos.
Estas declaraciones se realizan en el proyecto Vc60.dsp a través de las siguientes líneas:
CHFContext gclHF; // Management of the HyperFileSQL context
StCITY gstCity; // HF buffer of City file
StSTATE gstState;       // HF buffer of State file
2. Inicialización de las DLLs de WINDEV
El primer paso antes de usar los elementos desarrollados en WINDEV es cargar las DLLs de WINDEV en la memoria e inicializarlas.
Estas operaciones se realizan llamando a nWDInit, al principio del WinMain Procedure como sigue:
if (nWDInit(FALSE)!=WDERROR_OK) ... // manage the error case
3. Inicialización de HFSQL
Si su aplicación está llamando a una base de datos, el acceso a HyperFileSQL debe estar preparado.. La siguiente prueba se utiliza para comprobar si esta inicialización se realiza correctamente:
IHFContext * pIHF;
if (!((nWDGetHFContext((void**)&pIHF)==WDERROR_OK) &&
(gclHF.bInit(pIHF))))
{
// manage the error case
}
4. Carga de la biblioteca WINDEV (WDL)
La biblioteca WINDEV (extensión.WDL) contiene todos los elementos del proyecto (ventanas, informes, clases, consultas, análisis,...). Por lo tanto, debe ser cargado en la memoria para que sus componentes puedan ser llamados.
La operación de carga la realiza nWDOpenWDL de la siguiente manera:
if (nWDOpenWDL(szWDL)!=WDERROR_OK)
{  
// Library not found
}
5. Abrir el análisis del proyecto y asociar los búferes a los archivos de datos
Abrir el análisis le permite llamar a los archivos de datos. Una vez que este análisis haya sido abierto por /HOpenAnálisisEn el caso de que no haya ningún archivo de trabajo, todo lo que tiene que hacer es asociar los búferes de trabajo con los archivos descritos en este análisis:
// Open the analysis (WDD contained in the WDL)
if (!gclHF.HOpenAnalysis(szAnalysis,szPassword))
{
// Error opening the analysis
}
// Buffer <-> file association
gclHF.bAssociate("city",&gstCity,sizeof(gstCity));
gclHF.bAssociate("state",&gstState,sizeof(gstState));
Ejecutar códigos WINDEV desde el idioma externo

1. Código de inicialización del proyecto WINDEV

Este código se utiliza para iniciar el proyecto WINDEV declarando las variables globales por ejemplo. Se ejecuta desde el lenguaje externo por Proyecto nWDInit. Por ejemplo:
if (nWDInitProject("")==WDERROR_INIT)
{
// Error initializing the project
}

2. Llamar a un código de WLanguage

Todas las funciones WLanguage se pueden llamar desde el idioma externo. El comportamiento de estas funciones WLanguage, así como los valores devueltos, son idénticos tanto si se llaman:
  • de WINDEV o
  • desde la interfaz del lenguaje externo
Para conocer los parámetros y los valores de retorno de una función WLanguage, consulte la ayuda en línea o la documentación sobre WLanguage.
Puede utilizar nWDExecute para llamar a un Procedure WLanguage desde la interfaz externa. Por ejemplo:
nWDExecute("OPEN(\"menu.wdw\")"); // Open the WINDEV window
Observará que el parámetro esperado por nWDExecute al ser una cadena de caracteres C que contiene el código WLanguage a ejecutar, debe respetar la sintaxis de las cadenas C (los caracteres \deben ser dobles, las comillas deben ir precedidas por el carácter control \ ... etc). Esto te permite formatear esta cadena con caracteres control como %s, %l ... como la función de impresión de C.
Además, como para el WLanguage codificado en WINDEV, esta cadena no distingue entre mayúsculas y minúsculas (caracteres en mayúsculas / minúsculas). Por lo tanto, el comando "Info" también puede escribirse como "INFO".

3. Recuperación de los eventos lanzados en las ventanas WINDEV

La entrada en las ventanas WINDEV requiere recuperar los eventos desencadenados en estas ventanas.
Para recuperar los eventos de usuario (haga clic en un menú, en un botón,...), debe implementar un sistema basado en una función'callback' en su programa C. Esta función será llamada automáticamente por su ventana WINDEV para cada acción del usuario.
Para averiguar el tipo de acción que realiza el usuario, tiene la posibilidad de utilizar una cadena de caracteres Variable (en WLanguage) llamada 'WDKey'. Esta Variable se utilizará en su código WLanguage para señalar al programa C qué botón se ha pulsado, por ejemplo. Esta cadena no tiene límite de tamaño y puede contener las instrucciones detalladas que se recuperarán de su código C.
Ejemplo: Código C
// Open the first application window
// Define the procedure that manages the WINDEV window
nWDSetCallbackNext(CallBackMenu,0);
// Open the WINDEV window
nWDExecute("OPEN(\"menu.wdw\")");
[...]
C procedure used as callback for the window:
void CallBackMenu(DWORD dwUserParam,LPCTSTR pszCodeAction)
{
// pszCodeAction contains the sequence of shortcuts
// that are used to select the menu choice  
if( strcmp(pszCodeAction,"Exit application")==0 ) nWDExecute("CLOSE()"); // Exit
Código de "File .. Exit" de la ventana "Menu" de WINDEV (WLanguage):
WDKey="Exit application"
nWDSetCallbackSiguiente permite definir el procedure associated con la siguiente ventana que se abrirá. La llamada a nWDExecute para realizar la apertura de esta ventana establece el vínculo entre la ventana "Menú" y la llamada de retorno "CallBackMenu".
Cuando el usuario hace clic en "File...Exit", WDKey se devolverá en el parámetro "pszCodeAction" al "CallBackMenu" callback que puede probarse en el código C para realizar la siguiente acción.
Nota: La variable WDKey siendo una cadena de caracteres, su contenido puede ser un description detallado de la acción a realizar. Por ejemplo, "Cerrar la aplicación".
Finalización de la aplicación
Para finalizar el uso de la interfaz externa, basta con llamar a WDTerm que no espera ningún parámetro. Por ejemplo:
WDTerm();
Versión mínima requerida
  • Versión 9
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local