Daniel, muchas gracias por las indicaciones de enlaces, bastante material. Pude leerlo con atencion, casi todo, pero sigo sin encontrar una solución.
Carlos Britos wrote:lo que saqué en limpio es que:
La compilacion del Ani en el rc y la carga del mismo en el exe son correctas
En el RC
12345 = es el id del recurso
21 = es el tipo de recurso
Hé leído sobre esa denominacion del
resource_type en algun lugar (creo que en Delphi), pero a mi no me há dado cierto. Con tantas tentativas que hice pude ver que el windres.exe acepta otra denominaciones de
resource_type pero no las genera en el objeto para ser asamblado. Ya el Borland Resource Compiler (que la Minigui Extended utiliza), puede utilizar "HMGPICTURE" y que es tratado diferencialmente en la hora de cargarlo en ejecucion sea para uso display como para imprimir desde el RC. Pero ambos verifican el formato del archivo y creo que justamente está allí nuestro problema. Porque no es BITMAP ni ICON y en ambos compiladores de recursos (windres y brc32) deberian aceptarlo como CURSOR (según instrucciones de MSDN) y en cambio dan como error al evaluarlo como archivo de imagen, por lo que condena la generacion del objeto de resource a ser anexado al ejecutable.
Otra cosa que me gustaria aclarar, que por experiencia de usuário en otro forum, relató que ID del resource deberia evitar caracter numérico en el primer caracter para la IDE del source y creo que tambien sirve para el nombre del archivo jpg (por ejemplo). Porque no funciona, al menos eso en Minigui Extended (
ver relato).
Carlos Britos wrote:En el exe para con esta funcion se obtiene el handle del Ani correctamente.
Code: Select all
HB_FUNC( IMAGEANIMATE )
{
HWND h = (HWND) hb_parnl(1);
HRSRC hResourceData;
HGLOBAL hGlobalAlloc, hGlobalResource;
LPVOID lpGlobalAlloc, lpGlobalResource;
DWORD nFileSize;
hResourceData = FindResource( NULL, (LPCWSTR) hb_parni(2), (LPCWSTR) 21 );
hGlobalResource = (HGLOBAL) LoadResource( GetModuleHandle(0), hResourceData );
lpGlobalResource = LockResource( hGlobalResource );
nFileSize = SizeofResource( NULL, (HRSRC) hResourceData );
hGlobalAlloc = GlobalAlloc( GHND, nFileSize );
if( hGlobalAlloc == NULL )
{
FreeResource( hGlobalResource );
return ;
}
lpGlobalAlloc = GlobalLock( hGlobalAlloc );
memcpy( lpGlobalAlloc, lpGlobalResource, nFileSize );
GlobalUnlock( hGlobalAlloc );
FreeResource( hGlobalResource );
SendMessage( h, (UINT) STM_SETIMAGE, (WPARAM) IMAGE_ICON, (LPARAM) hGlobalAlloc );
hb_retnl( (LONG) hGlobalAlloc ) ;
}
Este código es similar a la que Claudio Soto disponibilizó en las funciones en C de Bostaurus y que tambien está en duplicidad en C:\hmg.3.1.5\hfcl\Source\HMG_HPDF.Prg (lo que me parece erroneo), habiendo disponibilidad en la lib Bostaurus. Pena que Claudio, no disponibilizó algun ejemplo en HMG utilizando esa misma funcion
_bt_LoadFileFromResources. Asi que no tenemos comparativo para saber si funciona. Aunque este seria otro tema paralelo al este tópico, claro que tambien es importante atribuir un valor al contenedor (componente). Pero no tengo seguridad que pueda cargar un archivo
.ANI, porque por lo que hé visto de Bostaurs.ch, trata de los siguientes archivos de imagenes: BMP, JPG, GIF, TIF y PNG (no menciona .ANI).
Mis conclusiones actuales son: Impedimiento al reconocer un nuevo formato del archivo ".ANI" tanto para ambos compiladores de recursos (windres y brc32) que son utilizados en HMG y MiniguiExtended respectivamente. Si pudieramos hechar manos de los códigos fuentes de tales compiladores de recursos, podríamos intentar hacer algo.
Sobre cargar archivo con otros formatos desde el RC para ser exibidos en pantalla o para impresion, está para ser mejorado...
Carlos Britos wrote:( mi_conocimiento_de_C == NULL ) ;
jaja Yo tambien ! jaja quien sabe Claudio Soto disponga un tiempito para leer todo esto... y pueda darnos una luz.