Page 1 of 1

DLL de terceros y definición de funciones.

PostPosted: Tue Dec 09, 2008 7:29 pm
by FiveWiDi
Hola a todos,

A ver si me pueden ayudar un poco.

Estoy intentando definir como usaré una utilidad en una aplicación, y ésta viene en una DLL.

Según la documentación la definición de una función concreta seria:
********************************
HWND TerCreateWindowAlt(x, y, width, height, IsContained, hParentWnd, styles)

int x; // x position of the window in pixel units
int y; // y position of the window in the pixel units
int width; // width of the window in the pixel units
int height; // height of the window in the pixel units
BOOL IsContained; // TRUE if this window is to be contained inside another window
HWND hParentWnd; // handle of the parent window.
DWORD styles; // TER window styles. Please refer to the TER_xxx constants defined in the 'Getting Started' chapter. Set to 0 to use the default styles.

Description: This is a quick method of creating a TER window. For a more elaborate method of creating a TER window, please refer to the CreateTerWindow function.

Return Value: This function returns the window handle of the new window. It returns NULL if the window creation fails.
********************************

y yo la intento 'definir' así:

DLL32 FUNCTION TerCreateWindowAlt( x AS LONG, ;
y AS LONG, ;
width AS LONG, ;
height AS LONG, ;
IsContained AS _INT, ;
hParentWnd AS LONG, ;
styles AS LONG ) ;
AS LONG PASCAL FROM "TerCreateWindowAlt" LIB "ter16.dll"


¿Sería correcto?
¿Cuando ejecuto la aplicación debo realizar en su inicio Loadlibrary()?

Saludos y gracias
Carlos G.

PostPosted: Tue Dec 09, 2008 9:28 pm
by Antonio Linares
Carlos,

> IsContained AS _INT, ;

Preferible definelo como LONG tambien

> LIB "ter16.dll"

El que se llame 16 es solo casualidad, o sera una DLL de 16 bits ? Una DLL de 16 bits no la puedes usar desde una aplicacion en 32 bits.

> ¿Sería correcto?

Si :-)

> ¿Cuando ejecuto la aplicación debo realizar en su inicio Loadlibrary()?

No, no es necesario. DLL FUNCTION ... lo hace automaticamente. Solo hay que llamar a LoadLibrary() previamente cuando necesitemos mantener cargada (abierta) la DLL.

PostPosted: Tue Dec 09, 2008 11:58 pm
by FiveWiDi
Antonio Linares wrote:Carlos,

> IsContained AS _INT, ;

Preferible definelo como LONG tambien

> LIB "ter16.dll"

El que se llame 16 es solo casualidad, o sera una DLL de 16 bits ? Una DLL de 16 bits no la puedes usar desde una aplicacion en 32 bits.

> ¿Sería correcto?

Si :-)

> ¿Cuando ejecuto la aplicación debo realizar en su inicio Loadlibrary()?

No, no es necesario. DLL FUNCTION ... lo hace automaticamente. Solo hay que llamar a LoadLibrary() previamente cuando necesitemos mantener cargada (abierta) la DLL.


Gracias Antonio,

Ter16.dll ==>> el 16 es la versión; coindicencias.

Ha funcionado; estoy maravillado. No habia experimentado antes en esto (DLL de terceros me refiero).

Saludos
Carlos G.