Question

c++ Picture set Image

Asked by: tipsybroom

Hi Experts,

i have a VS6 c++ project. I created a form and want to add an image to a Picture Control.

I added the Picture Control to the form, but I dont know how I can set the image to the Control.

I tryed m_pic1.SetBitmap but it does not work.

Could someone post a code how I can do this?

Many thanks!
Tipsybroom

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-08-18 at 07:17:31ID24661488
Tags

c++ Picture control

Topics

C++ Programming Language

,

Windows MFC Programming

,

Microsoft Visual C++.Net

Participating Experts
2
Points
500
Comments
17

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Picture/image changing
    Is there any way to make a form or the images on the form rotate with out using a picture box or image box or anything like that just the form and if so how?
  2. Pictures
    How do I save a picture box's picture into a file? I don't care what it is, bmp, jpg, or gif.
  3. Read the contents from an Image/Picture
    Hello, I have an image/picture contains text. Is there anyway to read the contents from an image/picture??? Any help is greatly appreciated Thanks in advance Regards -Venkitta
  4. picture
    hi experts, i need to put picture or imagebox into vb form and it should show a picture. but when mouse is over it should show another picture. but only when mouse is over this picture or image box. In this way i will try to make button like in web pages. i tried to use image...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: ZoppoPosted on 2009-08-18 at 07:24:46ID: 25123565

Hi tipsybroom,

is the 'm_pic1' a CStatic attached to the control? If so, check if the control has the style SS_BITMAP set (this can be set in the static-control's properties dialog with the combo-list 'Type:')

Further, if you use a CBitmap to load the bitmap you may have to detach the loaded bitmap from the CBitmap before the CBitmap gets deleted (i.e. if the CBitmap is a local stack instance) with CBitmap::Detach().

ZOPPO

 

by: tipsybroomPosted on 2009-08-18 at 07:47:20ID: 25123792

Hi!

The 'm_pic1' is a CStatic. But I will try it with the type "SS_BITMAP". I think I selected something like "_Control".

I have no time to test it at the moment. Can you post a code snippet where I can see how the Image/Bitmap is set to the Picture Control with CBitmap::Detach()?

Many thanks!
Tipsybroom

 

by: ZoppoPosted on 2009-08-18 at 07:56:36ID: 25123888

Hi,

here a short code snippet about detaching the bitmap:

> CBitmap bmp;
> bmp.LoadBitmap( ... );
> m_pic1.SetBitmap( bmp.Detach() );

Hope that helps,

ZOPPO

 

by: Gideon7Posted on 2009-08-18 at 17:17:22ID: 25128761

If you dragged the dialog object from "_Control" in Visual Studio you might have inadvertently dragged in a VB Picture Control (that is, a COM object that supports IPicture, LPPICTUREDISP, and OleLoadPIcture).  This is a true ActiveX COM control, a very different beast than a COMCTL32 common control.

Try re-dragging the object from the toolbar, this time selecting from the VS control toolbar using the icon in the upper-right corner (looks like a cactus and sun).  After you drag it into place, right-click on it and select Properties.  In the Type dropbox select Bitmap to set SS_BITMAP in the .rc file.

 

by: tipsybroomPosted on 2009-08-19 at 01:13:47ID: 25130448

Hello again,

now i´ve tried your code sample without any success.
maybe i am to stupid to leave the console based programming in C++ ;-)

what i´ve done is the following:

CBitmap bmp;
bmp.LoadBitmap("accept.ico");
m_pic1.SetBitmap( bmp.Detach() );

the icon is in the Debugpath and should be found.
i had setup the picture control from type: Border (don´t know if it called border in the english ide. in german it´s called Rahmen) to type: Bitmap. i have tried Type Symbol of also.

another way i´ve tried is this:

HINSTANCE hInstance = AfxGetInstanceHandle();
HANDLE hImage = LoadImage( hInstance , "accept.ico", IMAGE_BITMAP, 596, 331, LR_LOADFROMFILE);

with also no succes.

is there any way to load the icon from the resources?
or must it be a file?

Thank you

 

by: ZoppoPosted on 2009-08-19 at 01:28:29ID: 25130533

Hi,

you cannot load an icon from a 'ico' file with CBitmap::LoadBitmap - to load an icon from a 'ico' file you'll have to do like in your second try but set the 'uType' paramter of 'LoadImage' to IMAGE_ICON instead of IMAGE_BITMAP. Or another possibility would be to add the icon to the resources and load it from there.

Further you should set the static control's style to SS_ICON.

Even it may be a good idea to check the return values of the function 'LoadImage' (NULL if an error occurs).

ZOPPO

 

by: ZoppoPosted on 2009-08-19 at 01:30:32ID: 25130542

Addition, just for info: The function CBitmap::LoadBitmap can only be used to load a bitmap from the applications resources - it can't be used to load an image/icon from a file.

ZOPPO

 

by: tipsybroomPosted on 2009-08-19 at 01:42:42ID: 25130598

now I load the handle into the picture control...

      HINSTANCE hInstance = AfxGetInstanceHandle();
      HANDLE hImage = LoadImage( hInstance , "accept.ico", IMAGE_ICON, 596, 331, LR_LOADFROMFILE);
      
      
      m_pic1.SetBitmap(hImage);

i ve got an error that there is no conversion from void * to struct HBITMAP possible.
what can I do?
shoul i convert it or is there an override function of setBitmap?

thank you

 

by: ZoppoPosted on 2009-08-19 at 02:01:08ID: 25130686

Hi,

you just have to cast 'hImage' to be a HBITMAP, like this:

> m_pic1.SetBitmap( (HBITMAP)hImage );

ZOPPO

 

by: tipsybroomPosted on 2009-08-19 at 02:07:15ID: 25130713

thanks...

i´ve tried with no success! the icon isn´t schown in the picture control.
what could be wrong?

maybe the style is wrong?

in the german ide i could´t find the style ss_icon??

right click on the control... properties... and there is type... set type to icon and it is shown like a icon on the form.
i think that is the style right?

 

by: ZoppoPosted on 2009-08-19 at 02:27:43ID: 25130812

Hm - I re-read about SetBitmap in MSDN and it seems this can only be used for CStatic with style SS_BITMAP, not with SS_ICON (this is what you set when selecting 'Icon' in the properties).

Unfortunateley a bitmap is a different thing as an icon.

I see two 'simple' solutions:
1. put the icon into the resources. Then you can set the CStatic's text to the resource ID of the icon.
2. convert your .ico file into a bitmap, i.e. a .bmp file, set the CStatic's type to 'bitmap' and use code similar to the above.

Another possibility would be to draw the icon yourself - for this you can add a WM_PAINT handler to the dialog and use 'CDC::DrawIcon'; for this I'd suggest to load the icon once when the dialog is initialized instead of loading it every time the WM_PAINT handler is called - for the positioning of the icon you can even use a static control; just give it a resource ID (i.e. IDC_STATIC_ICON) and uncheck it's 'Visible' property.

Then in the WM_PAINT handler you can use 'GetDlgItem' and 'GetWindowRect' to retrieve the position where to draw the icon.

ZOPPO

 

by: tipsybroomPosted on 2009-08-19 at 02:31:38ID: 25130834

the icon should be changed by code.

could i Change the CStatic´s text by cod?

 

by: ZoppoPosted on 2009-08-19 at 02:34:25ID: 25130851

Yes, but this won't change anything - the text is used to load the icon from resources when the control is created/initialized, so changing the text won't affect the shown icon.

But, there's a 'CStatic::SetIcon' function - combined with the SS_ICON style (type 'Icon') this should work too ...

ZOPPO

 

by: tipsybroomPosted on 2009-08-19 at 02:46:42ID: 25130909

now i´ve tried the SetIcon function.

m_pic1.SetIcon((HICON)IDI_ICON1);

no error, but nothing to see at run.

 

by: ZoppoPosted on 2009-08-19 at 02:59:39ID: 25130965

You cannot use a resource ID - you need to load the icon to get a HICON, somehow like this:

> HICON hIcon = LoadIcon( AfxGetResourceHandle(), MAKEINTRESOURCE( IDI_ICON1 ) );

or

> HICON hIcon = AfxGetApp()->LoadIcon( IDI_ICON1 );

or as shown above with LoadImage if you want to load it from a file.

ZOPPO

 

by: tipsybroomPosted on 2009-08-19 at 03:04:44ID: 25130987

it works!

thank you!

i hate c++ since yesterday ;)

 

by: ZoppoPosted on 2009-08-19 at 03:08:34ID: 25131006

That's fine ... you're welcome.

I'd suggest not to hate C++, it's still one of the most popular and powerful languages, even if sometimes it's a little bit complex. The problem you had was not a C++ problem but a Win32 API-related thing.

Have a nice day,

best regards,

ZOPPO

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...