Re: Using HBITMAP with CBitmpa/CBitmapButton
Here is a CBitmapButton dervied class that loads bitmaps from bitmap files
instead of resource
#pragma once
// CBitmapButtonEx
class CBitmapButtonEx : public CBitmapButton
{
DECLARE_DYNAMIC(CBitmapButtonEx)
public:
CBitmapButtonEx();
virtual ~CBitmapButtonEx();
BOOL LoadBitmapsFromFile(LPCTSTR lpszBitmapResource,LPCTSTR
lpszBitmapResourceSel = NULL,LPCTSTR lpszBitmapResourceFocus = NULL,LPCTSTR
lpszBitmapResourceDisabled = NULL );
protected:
DECLARE_MESSAGE_MAP()
};
// BitmapButtonEx.cpp : implementation file
//
#include "stdafx.h"
#include "BitmapButton.h"
#include "BitmapButtonEx.h"
// CBitmapButtonEx
IMPLEMENT_DYNAMIC(CBitmapButtonEx, CBitmapButton)
CBitmapButtonEx::CBitmapButtonEx()
{
}
CBitmapButtonEx::~CBitmapButtonEx()
{
}
BEGIN_MESSAGE_MAP(CBitmapButtonEx, CBitmapButton)
END_MESSAGE_MAP()
// CBitmapButtonEx message handlers
BOOL CBitmapButtonEx::LoadBitmapsFromFile(LPCTSTR lpszBitmap,LPCTSTR
lpszBitmapSel,LPCTSTR lpszBitmapFocus,LPCTSTR lpszBitmapDisabled)
{
HANDLE hBmp =
LoadImage(NULL,lpszBitmap,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
if (hBmp == NULL)
{
return FALSE;
}
m_bitmap.Attach(hBmp);
BOOL AllLoaded = TRUE;
if (lpszBitmapSel != NULL)
{
hBmp =
LoadImage(NULL,lpszBitmap,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
if (hBmp != NULL)
{
m_bitmapSel.Attach(hBmp);
}
else
{
AllLoaded = FALSE;
}
}
if (lpszBitmapDisabled != NULL)
{
hBmp =
LoadImage(NULL,lpszBitmapDisabled,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
if (hBmp != NULL)
{
m_bitmapDisabled.Attach(hBmp);
}
else
{
AllLoaded = FALSE;
}
}
if (lpszBitmapFocus != NULL)
{
hBmp =
LoadImage(NULL,lpszBitmapFocus,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
if (hBmp != NULL)
{
m_bitmapFocus.Attach(hBmp);
}
else
{
AllLoaded = FALSE;
}
}
return AllLoaded;
}
AliR.
"AliR (VC++ MVP)" <AliR@online.nospam> wrote in message
news:EKkTk.7067$c45.4797@nlpi065.nbdc.sbc.com...
I'm not sure I understand correctly. If the bitmaps are not part of your
resource anymore then LoadBitmap won't load them. You will either have to
call LoadImage or use CImage to load them from file.
Once you have a HBITMAP (the return value of LoadBitmap is a HBITMAP), you
can then attach it to a CBitmap using CBitmap::Attach();
CBitmapButton is a different story, the only way to load bitmaps into a
CBitmapButton that I know of is to put them in your resource.
You can of course write your own bitmap button class that can except a
CBitmap or HBITMAP, or use a third party button.
there might be some on www.codeproject.com
AliR.
"mircowhat" <mircowhat@discussions.microsoft.com> wrote in message
news:E0B30E5B-6891-4471-8D03-490EBD47C594@microsoft.com...
I'm trying to use LoadBitmap to bring a bmp file from a specified
directory,
into my application while the application is running.
All of my images (Around 800 count) are loaded into the resources. I
need
to remove them from the resources and load the images dynamically. Hence
using LoadBitmap. I plan on loading all the images into a vector/array
so
they can be switched out on the fly. I have about 100
CBitmapButton/CBitmap
objects. I currently load the images by using LoadBitmap and
LoadBitmaps.
They are just taking the resource ID's of my images.
My problem is i can't figure out how to go from a HBITMAP to something
that
is usable for LoadBitmap/LoadBitmaps.