Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6051359
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T07:48:46+00:00 2026-05-23T07:48:46+00:00

Suppose I create a function that process a bitmap in memory dc and return

  • 0

Suppose I create a function that process a bitmap in memory dc and return it

HBITMAP paint (HWND hwnd)
{

HDC windc = ::GetWindowDC(hwnd);
HDC memdc = ::CreateCompatibleDC(windc);
HBITMAP bitmap = ::CreateCompatibleBitmap(windc,100,100); //Don't bother with the height and width
::SelectObject(memdc,(HGDIOBJ)bitmap);

/* DeleteDC(windc) here? */

//do the painting
//...
//painting done

/*DeleteDC(memdc) here? */

return bitmap;

/* Code does not reach here */
/* So where do I put DeleteObject(bitmap)? */
}

My question is where and when to delete the bitmap? Also, does deleting windc affect the memdc? or memdc is purely created (and does not contain information that “points” to the windc) ? If that is true, then deleting windc after bitmap and memdc are created (before any painting) is appropriate.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T07:48:46+00:00Added an answer on May 23, 2026 at 7:48 am
    DeleteDC(windc);
    

    Never. You have to call ReleaseDC(windc); instead.

    After ::CreateCompatibleDC(windc); you don’t need windc and don’t care what happens with it. HDC returned by CreateCompatibleDC just derives some of the parameters (device dependent pixel representation, etc) but does not refer to windc in any way.

    Instead of this:

    ::SelectObject(memdc,(HGDIOBJ)bitmap);
    
    //do the painting
    //...
    //painting done
    
    /*DeleteDC(memdc) here? */
    
    return bitmap;
    

    You have to do something like this:

    HGDIOBJ prevBitmap = ::SelectObject(memdc,(HGDIOBJ)bitmap);
    
    //do the painting
    //...
    //painting done
    
    ::SelectObject(memdc,prevBitmap);
    DeleteDC(memdc);
    
    return bitmap;
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

In R, suppose there is a function that return a list of vectors and
I'm trying to create a simple function that makes a simple test and return
Suppose I want to create a set of observers based on type. That is
Suppose I have a stored procedure that manages its own transaction CREATE PROCEDURE theProc
Suppose I am designing a class that can handle any database technology to create
Suppose I have method: void foo(const std::string& s); Can I create boost::function: boost::function<void(const std::string&)>
I am suppose to Create a form that gives the user 3 different options
Suppose you're calling a Win32 function that will fill in your byte array. You
Suppose you write a function in SQL Server that conditionally calls itself. If you
For my program I am trying to create a function that will generate an

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.