Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Save hicon to a .ico file

Posted on 2002-03-03
10
Medium Priority
?
3,040 Views
Last Modified: 2013-12-03
Q: How to save an HICON to a .ico file

VC6, Needs to work on Win 95 and up. Can be MFC or Win API.

Ideally work for whatever the hicon contains, but failing that a version which works with 32X32 16 color icons would do.



BOOL MySaveIcon( hIcon, LPCSTR lpszFile )
{
// <-------what goes here
}


int main( int argc, char * argv[] )
{
HICON hIcon ;
// etc. etc. lots of stuff setting up hIcon

MySaveIcon( hIcon "c:\\example.ico" ) ;
}
0
Comment
Question by:Answers2000
  • 3
  • 3
  • 2
  • +2
10 Comments
 
LVL 30

Accepted Solution

by:
Axter earned 400 total points
ID: 6838273
HANDLE hIcon; //handle to Icon
int nHandleSize = ::GlobalSize(hIcon);
LPSTR lpIcon = ::GlobalLock(hIcon);

//simply write nHandleSize bytes of the data in lpIcon to
// the file on the disk. Don't forget to do

::GlobalUnlock(hIcon);

0
 
LVL 6

Expert Comment

by:MichaelS
ID: 6838598
0
 
LVL 86

Expert Comment

by:jkr
ID: 6841573
0
Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

 
LVL 86

Expert Comment

by:jkr
ID: 6841574
Hum, that's actually pretty much what Axter described...
0
 
LVL 30

Expert Comment

by:Axter
ID: 6842366
jkr,
It should be.
I copied it off one of your previous answers. :-) :-O
0
 
LVL 8

Author Comment

by:Answers2000
ID: 6843120
Michael, nope, it needs to be ico format

Axter/JKR - if this work'd it be great - funny that I get 0 back for nHandleSize (in nAxter's ver), I'll go back and check the rest of the stuff to figure out if it's me or this method simply doesn't work in win32...  btw I'm testing on Win98 at the moment, but it needs to work on everything from 95 and NT4 upwards.

In case you're wondering, I'm adding a mini-icon editor to my prog (MFC) as a "hobby" (i.e. not much time to work on this) in between doing the real work on it. The darn thing only needs to work on 32X32 16 color icons, and this one last thing to solve.

0
 
LVL 86

Expert Comment

by:jkr
ID: 6843198
>>It should be.
>>I copied it off one of your previous answers. :-) :-O

It'd better be one graded "A" :o)
0
 
LVL 30

Expert Comment

by:Axter
ID: 6844006
Answers2000,
Can you post the code you have in the relevant section?
0
 
LVL 8

Author Comment

by:Answers2000
ID: 6965573
Sorry for delay

I'm sure your answer is right.

The test program I have uses all this library of code (not by me!) to make the icon, and this is when I couldn't make it save.   The bug seems to be in the library, which I don't have time to debug - so I've shelved this hobby project for the time being.
0
 

Expert Comment

by:eliakaris
ID: 13339273
I am trying to use this code in c# using .NET interop and this does not seem to be working.

I am using the Handle property of the icon.
All I receive from the GlobalSize call is zero...

here are my P/Invokes...
[DllImport("kernel32.dll")]
static extern bool GlobalUnlock(IntPtr hMem);

[DllImport("kernel32.dll")]
static extern uint GlobalSize(IntPtr hMem);

[DllImport("kernel32.dll")]
static extern IntPtr GlobalLock(IntPtr hMem);

Doesnt work with LocalLock either.

Elia
0

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

As more and more people are shifting to the latest .Net frameworks, the windows presentation framework is gaining importance by the day. Many people are now turning to WPF controls to provide a rich user experience. I have been using WPF controls fo…
What my article will show is if you ever had to do processing to a listbox without being able to just select all the items in it. My software Visual Studio 2008 crystal report v11 My issue was I wanted to add crystal report to a form and show…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Is your data getting by on basic protection measures? In today’s climate of debilitating malware and ransomware—like WannaCry—that may not be enough. You need to establish more than basics, like a recovery plan that protects both data and endpoints.…

963 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question