Page 1 of 2
.DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Mon Apr 27, 2020 7:27 am
by SALINETAS24
Hola grupo.
Tengo una duda.
¿ Es posible utilizar las imágenes que se encuentran en la ".DLL", por ejemplo en la SHELL32.DLL?
En caso afirmativo, ¿como puedo saber que imágenes hay en la ".DLL"?
y por ultimo, ¿es interesante el uso de la ".DLL", o es mejor desde nuestro fichero ".RC"?
Gracias, vamos con una cervecita fresquita y en casa

Re: .DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Mon Apr 27, 2020 12:48 pm
by danielmaximiliano
Hola Salinetas , en Minigui tienes el ejemplo C:\MiniGUI\SAMPLES\Advanced\IconView
Re: .DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Mon Apr 27, 2020 3:29 pm
by SALINETAS24
Hola Daniel, gracias por tu respuesta.
El tema es que yo estoy usando HMG y el ejemplo que tu indicas no lo tengo, aparte de que según tengo entendido no es compatible.
Sl2
Re: .DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Mon Apr 27, 2020 3:36 pm
by martingz
Salinetas en cuanto a tu ultimo punto, creo que para mi es mejor usar mis imagenes e iconos dentro de mi RC, solo cargo las que utilizo, ni una mas, y asi las tengo dentro de mi ejecutable, contras aumenta mi tamaño del exe
no he tratado lo de usar imagenes de una dll, suena interesante, tendre que investigar un poco
saludos
Re: .DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Mon Apr 27, 2020 6:36 pm
by danielmaximiliano
SALINETAS24 wrote: ↑Mon Apr 27, 2020 3:29 pm
Hola Daniel, gracias por tu respuesta.
El tema es que yo estoy usando HMG y el ejemplo que tu indicas no lo tengo, aparte de que según tengo entendido no es compatible.
Sl2
Code: Select all
/*
* MiniGUI Icon Viewer Demo
*
* Copyright (c) 2004-2005 Grigory Filatov <gfilatov@inbox.ru>
*/
#include "minigui.ch"
#define APP_TITLE "Icon viewer"
#define VERSION " v.1.0"
#define COPYRIGHT " 2004-2005 Grigory Filatov"
Static cFileName := "", lOpened := .f.
/*
* Main()
*/
Procedure Main
Local hWnd, w := GetDesktopRectWidth(), h := GetDesktopRectHeight()
SET DATE GERMAN
DEFINE WINDOW Win_1 ;
AT GetDesktopRectTop(), GetDesktopRectLeft() ;
WIDTH w ;
HEIGHT h ;
TITLE APP_TITLE ;
ICON "MAIN" ;
MAIN ;
ON PAINT IconShow() ;
ON SIZE ButtonsResize() ;
ON MAXIMIZE IF( lOpened, DoMethod( "Win_1", "Restore" ), ButtonsResize() ) ;
FONT "Tahoma" SIZE 9
DEFINE STATUSBAR
STATUSITEM "Copyright " + Chr(169) + COPYRIGHT
KEYBOARD
DATE
CLOCK
END STATUSBAR
@ h-90, w-270 BUTTON Btn_Open ;
CAPTION '&Open a file...' ;
ACTION OpenFile() ;
WIDTH 120 ;
HEIGHT 26 ;
TOOLTIP "Open a file for view of icon" ;
BOLD
@ h-90, w-146 BUTTON Btn_Exit ;
CAPTION 'E&xit' ;
ACTION Win_1.Release ;
WIDTH 120 ;
HEIGHT 26 ;
TOOLTIP "Close this program" ;
BOLD
DEFINE CONTEXT MENU
ITEM 'Open a file...' ACTION OpenFile()
SEPARATOR
ITEM 'About' ACTION MsgAbout()
END MENU
END WINDOW
ACTIVATE WINDOW Win_1
Return
/*
* IconShow()
*/
FUNCTION IconShow()
Local i, y, z, x, bb, IcoL, s_, w
Win_1.Btn_Open.Setfocus
if lOpened
Win_1.Row := GetDesktopRectTop()
Win_1.Col := GetDesktopRectLeft()
Win_1.Width := GetDesktopRectWidth()
Win_1.Height := GetDesktopRectHeight()
z := -32
bb := -1
x := ExtractIconEx(cFileName, -1, s_, IcoL, 1)
if x == 0
lOpened := .f.
MsgStop('Icons is missing!', 'Warning', , .f.)
Win_1.Title := APP_TITLE
else
w := Win_1.Width / 32
for i := 0 to x / w
x := -32 ; z += 32
for y := 0 to w
x+=32 ; bb++
IcoL := ExtractIcon(cFileName, bb)
DrawIcon(_HMG_MainHandle, x, z, IcoL)
DestroyIcon(IcoL)
next
if z > 95
x := 0
endif
next
endif
endif
RETURN NIL
/*
* OpenFile()
*/
FUNCTION OpenFile()
Local cOpenFile := Getfile( { {"All files with icons", "*.dll;*.exe;*.ico"}, ;
{"All files", "*.*"} }, "Open a File" )
cFileName := cOpenFile
if !empty(cFileName).and.file(cFileName)
Win_1.Title := cFileName + " - " + APP_TITLE
lOpened := .t.
InvalidateRect( GetFormHandle("Win_1") )
Win_1.Maximize
Win_1.Restore
endif
RETURN NIL
/*
* ButtonsResize()
*/
FUNCTION ButtonsResize()
Win_1.Btn_Open.Row := Win_1.Height-90
Win_1.Btn_Open.Col := Win_1.Width-270
Win_1.Btn_Exit.Row := Win_1.Height-90
Win_1.Btn_Exit.Col := Win_1.Width-146
RETURN NIL
/*
* MsgAbout()
*/
Function MsgAbout()
return MsgInfo( APP_TITLE + VERSION + " - FREEWARE" + CRLF + ;
"Copyright " + Chr(169) + COPYRIGHT + CRLF + CRLF + ;
"eMail: gfilatov@inbox.ru" + CRLF + CRLF + ;
padc("This program is Freeware!", 30) + CRLF + ;
padc("Copying is allowed!", 36), "About", , .f. )
#pragma BEGINDUMP
Re: .DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Tue Apr 28, 2020 7:20 am
by SALINETAS24
danielmaximiliano wrote: ↑Mon Apr 27, 2020 6:36 pm
SALINETAS24 wrote: ↑Mon Apr 27, 2020 3:29 pm
Hola Daniel, gracias por tu respuesta.
El tema es que yo estoy usando HMG y el ejemplo que tu indicas no lo tengo, aparte de que según tengo entendido no es compatible.
Sl2
Code: Select all
/*
* MiniGUI Icon Viewer Demo
*
* Copyright (c) 2004-2005 Grigory Filatov <gfilatov@inbox.ru>
*/
#include "minigui.ch"
#define APP_TITLE "Icon viewer"
#define VERSION " v.1.0"
#define COPYRIGHT " 2004-2005 Grigory Filatov"
Muchas gracias por tu rápida respuesta y por tu ejemplo, pero no puedo compilarlo ya que utilizo HMG y este ejemplo es para MINIGUI y muchas funciones o son distintas o no existen.
Un saludo.
Code: Select all
Harbour 3.2.0dev (r1703241902)
Copyright (c) 1999-2016, http://harbour-project.org/
C:/DOCUME~1/PROPIE~1/CONFIG~1/Temp/hbmk_3q7t9v.dir/DLL.o:DLL.c:(.data+0x38): undefined reference to `HB_FUN_GETDESKTOPRECTWIDTH'
C:/DOCUME~1/PROPIE~1/CONFIG~1/Temp/hbmk_3q7t9v.dir/DLL.o:DLL.c:(.data+0x48): undefined reference to `HB_FUN_GETDESKTOPRECTHEIGHT'
C:/DOCUME~1/PROPIE~1/CONFIG~1/Temp/hbmk_3q7t9v.dir/DLL.o:DLL.c:(.data+0x98): undefined reference to `HB_FUN_GETDESKTOPRECTLEFT'
C:/DOCUME~1/PROPIE~1/CONFIG~1/Temp/hbmk_3q7t9v.dir/DLL.o:DLL.c:(.data+0xa8): undefined reference to `HB_FUN_GETDESKTOPRECTTOP'
C:/DOCUME~1/PROPIE~1/CONFIG~1/Temp/hbmk_3q7t9v.dir/DLL.o:DLL.c:(.data+0x238): undefined reference to `HB_FUN_EXTRACTICONEX'
C:/DOCUME~1/PROPIE~1/CONFIG~1/Temp/hbmk_3q7t9v.dir/DLL.o:DLL.c:(.data+0x278): undefined reference to `HB_FUN_DRAWICON'
C:/DOCUME~1/PROPIE~1/CONFIG~1/Temp/hbmk_3q7t9v.dir/DLL.o:DLL.c:(.data+0x298): undefined reference to `HB_FUN_DESTROYICON'
collect2.exe: error: ld returned 1 exit status
hbmk2: Error: Ejecutando enlazador. 1
gcc.exe C:/DOCUME~1/PROPIE~1/CONFIG~1/Temp/hbmk_3q7t9v.dir/DLL.o C:/DOCUME~1/PROPIE~1/CONFIG~1/Temp/hbmk_3q7t9v.dir/hbmk_2eej3b.o C:/hmg.3.4.4/SAMPLES/EJEMPLOS_FORO/ICO_DLL/_temp.o -pthread -static-libgcc -static-libstdc++ -static -lpthread -mwindows -Wl,--start-group -lhmg -lcrypt -ledit -leditex -lgraph -lini -lreport -lhfcl -lmsvfw32 -lvfw32 -lhbmysql -lmysql -lhbfimage -lhbpgsql -lsddmy -lhbvpdf -lhbct -lhbwin -lhbmzip -lminizip -lhbmemio -lhbmisc -lhbtip -lsqlite3 -lhbsqlit3 -lsddodbc -lrddsql -lhbodbc -lodbc32 -lhbhpdf -lhbnetio -lxhb -lpng -llibhpdf -lhbzebra -lhbextern -lhbdebug -lhbvmmt -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -oDLL.exe -Lc:/hmg.3.4.4/harbour/lib/win/mingw -Lc:/hmg.3.4.4/lib
hbmk2: Error: Función(es) referenciada, no encontrada, pero desconocida:
GETDESKTOPRECTWIDTH(), GETDESKTOPRECTHEIGHT(), GETDESKTOPRECTLEFT(),
GETDESKTOPRECTTOP(), EXTRACTICONEX(), DRAWICON(), DESTROYICON()
Re: .DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Tue Apr 28, 2020 2:22 pm
by danielmaximiliano
Salinetas : en mi computador funciona el ejemplo. uso HMG.3.4.4

- 2020-04-28 11_18_37-Greenshot.png (94.67 KiB) Viewed 3012 times
Re: .DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Tue Apr 28, 2020 7:36 pm
by SALINETAS24
Hola Daniel, yo solo uso HMG.3.4.4 y no me funciona.
Es más, he rastreado la búsqueda de las funciones en los fuentes y no se encuentran, solo he encontrado esto en C_WINDOW.C
Code: Select all
HB_FUNC (GETDESKTOPWIDTH)
HB_FUNC (GETDESKTOPHEIGHT)
HB_FUNC (GETDESKTOPREALTOP)
HB_FUNC (GETDESKTOPREALLEFT)
HB_FUNC (GETDESKTOPREALWIDTH)
HB_FUNC (GETDESKTOPREALHEIGHT)
// GetDesktopWindow () --> hWndDesktop
HB_FUNC ( GETDESKTOPWINDOW )
HWND hWnd = GetDesktopWindow();
Sl2
Re: .DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Tue Apr 28, 2020 10:45 pm
by AUGE_OHR
hi,
you need to "extract" HB_FUNC from extended Version to use that Code with HMG.
also you need to modify Code
Code: Select all
IcoL := ExtractIcon(cFileName, bb)
DrawIcon(_HMG_MainHandle, x, z, IcoL)
which is
Code: Select all
#translate <p:Application,App>.Handle => _HMG_MainHandle
Re: .DLL e IMAGENES (.BMP, .ICO, .JPG)
Posted: Thu Apr 30, 2020 7:09 am
by SALINETAS24
Gracias, lo pruebo.
Sl2