www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How load icon from resource using LoadImage?

reply Marcone <marcone email.com> writes:
I am using this code to load icon from local directory, but I 
want to load icon from resource.res file:

wndclass.hIcon  = LoadImage( NULL, "icon.ico", IMAGE_ICON, 0, 0, 
LR_LOADFROMFILE| LR_SHARED | LR_LOADTRANSPARENT);
Jan 05 2020
next sibling parent reply JN <666total wp.pl> writes:
On Sunday, 5 January 2020 at 13:33:35 UTC, Marcone wrote:
 I am using this code to load icon from local directory, but I 
 want to load icon from resource.res file:

 wndclass.hIcon  = LoadImage( NULL, "icon.ico", IMAGE_ICON, 0, 
 0, LR_LOADFROMFILE| LR_SHARED | LR_LOADTRANSPARENT);
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadimagea According to the docs, the first argument is NULL only for standalone images, otherwise you have to provide a valid HINSTANCE. By the way, have you managed to add the res file into the binary? My understanding is that the res file should be added into the exe file by the rc command before it can be used.
Jan 05 2020
parent ShadoLight <ettienne.gilbert gmail.com> writes:
On Sunday, 5 January 2020 at 13:52:27 UTC, JN wrote:
 On Sunday, 5 January 2020 at 13:33:35 UTC, Marcone wrote:
[snip]
 By the way, have you managed to add the res file into the 
 binary? My understanding is that the res file should be added 
 into the exe file by the rc command before it can be used.
Sort of correct... but not strictly correct. Typically the resource compiler (such as Microsoft's rc.exe) compiles xyzfile.rc into xyzfile.res. xyzfile.res is then added into the exe by the linker during linking.
Jan 06 2020
prev sibling parent reply Rumbu <rumbu rumbu.ro> writes:
On Sunday, 5 January 2020 at 13:33:35 UTC, Marcone wrote:
 I am using this code to load icon from local directory, but I 
 want to load icon from resource.res file:

 wndclass.hIcon  = LoadImage( NULL, "icon.ico", IMAGE_ICON, 0, 
 0, LR_LOADFROMFILE| LR_SHARED | LR_LOADTRANSPARENT);
You cannot load icons from res files. If you link your res file to the executable, you can load the icon using: LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(youriconid)); The function LoadImage from above loads an icon from the file named icon.ico, not from a res file.
Jan 05 2020
parent Marcone <marcone email.com> writes:
On Sunday, 5 January 2020 at 15:13:17 UTC, Rumbu wrote:
 On Sunday, 5 January 2020 at 13:33:35 UTC, Marcone wrote:
 I am using this code to load icon from local directory, but I 
 want to load icon from resource.res file:

 wndclass.hIcon  = LoadImage( NULL, "icon.ico", IMAGE_ICON, 0, 
 0, LR_LOADFROMFILE| LR_SHARED | LR_LOADTRANSPARENT);
You cannot load icons from res files. If you link your res file to the executable, you can load the icon using: LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(youriconid)); The function LoadImage from above loads an icon from the file named icon.ico, not from a res file.
Very good! working using: LoadIcon(hInstance, MAKEINTRESOURCE(youriconid)); becouse GetModuleHandle(NULL) is undefined here.
Jan 05 2020