[C con Clase] Problema al cargar un recurso en una dll

Man Alvarez alvarez02 en gmail.com
Jue Jun 28 01:41:50 CEST 2007


Muchas gracias Steven! Me haz sacado de un gran apuro! Ya mi código trabaja
bien y pudo continuar con mi proyectoa
Y gracias también por tus consejos los voy a tomar muy en cuenta!

Saludos!

Steven Davidson escribió:

Hola Man,

El pasado 2007-06-27 21:41:30, Man Alvarez escribió:

MA> Steven modifiqué tu código para cargar la librería con LoadLibrary() y luego
MA> buscar el procedimiento con GetProcAddress() lo extraño es que ahora ya no
MA> me funciona tu código, estoy empezando a creer que ahí puede estar el error.

[CORTE]

MA> PD: Mandé mi código en un adjunto de un correo anterior. llego a la lista
MA> esta vez?

Sí, pero en el ZIP no incluiste el fichero fuente de la aplicación
donde usas la DLL. De todas maneras, has incluido el código que
interesa en este mensaje.

Veamos. Haciendo pruebas, arreglé el "problema". Haz lo siguiente:

HMODULE hDLL;
...
hDLL = LoadLibrary( "dll_dialogo.dll" );
...
case WM_COMMAND:
  if( HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDOK )
  {
    if( !Dialog( hDLL  ) )
      MessageBox( hwnd, "Dialog() == FALSE", "ERROR", MB_OK );
  }
break;

Como puedes ver, paso el manipulador del módulo de la DLL a la función
para que el cuadro de diálogo se base en ello. También puedes invocar
'GetModuleHandle()' si lo prefieres:

Dialog( GetModuleHandle("dll_dialogo.dll") );


Por cierto, no aconsejo cargar y liberar la DLL tantas veces. Sugiero
hacer esto al comienzo y al final, respectivamente. Por ejemplo, carga
la DLL nada más entrar en 'WinMain()' y liberarla justo antes de
retornar de ella. El esquema sería,

int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hNoUsado,
                    LPSTR lpszArg, int nModo )
{
  hDLL = LoadLibrary( "dll_dialogo.dll" );
  ...
  FreeLibrary( hDLL );
  return msg.wParam;
}

Tampoco incluí mi fichero de cabecera "dll_dialogo.h", ya que ahora
estamos manipulando la DLL explícitamente.


Espero que ahora te funcione.

Steven
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070627/0c13307c/attachment.html>


Más información sobre la lista de distribución Cconclase