add wxDrawStateBitmap() (closes #10289)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58397 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -306,6 +306,22 @@ extern HICON wxBitmapToHICON(const wxBitmap& bmp);
|
|||||||
extern
|
extern
|
||||||
HCURSOR wxBitmapToHCURSOR(const wxBitmap& bmp, int hotSpotX, int hotSpotY);
|
HCURSOR wxBitmapToHCURSOR(const wxBitmap& bmp, int hotSpotX, int hotSpotY);
|
||||||
|
|
||||||
|
|
||||||
|
#if wxUSE_OWNER_DRAWN
|
||||||
|
|
||||||
|
// Draw the bitmap in specified state (this is used by owner drawn controls)
|
||||||
|
enum wxDSBStates
|
||||||
|
{
|
||||||
|
wxDSB_NORMAL = 0,
|
||||||
|
wxDSB_SELECTED,
|
||||||
|
wxDSB_DISABLED
|
||||||
|
};
|
||||||
|
|
||||||
|
extern
|
||||||
|
BOOL wxDrawStateBitmap(HDC hDC, HBITMAP hBitmap, int x, int y, UINT uState);
|
||||||
|
|
||||||
|
#endif // wxUSE_OWNER_DRAWN
|
||||||
|
|
||||||
// get (x, y) from DWORD - notice that HI/LOWORD can *not* be used because they
|
// get (x, y) from DWORD - notice that HI/LOWORD can *not* be used because they
|
||||||
// will fail on system with multiple monitors where the coords may be negative
|
// will fail on system with multiple monitors where the coords may be negative
|
||||||
//
|
//
|
||||||
|
@@ -532,4 +532,50 @@ bool wxOwnerDrawn::OnDrawItem(wxDC& dc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// global helper functions implemented here
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
BOOL wxDrawStateBitmap(HDC hDC, HBITMAP hBitmap, int x, int y, UINT uState)
|
||||||
|
{
|
||||||
|
// determine size of bitmap image
|
||||||
|
BITMAP bmp;
|
||||||
|
if ( !::GetObject(hBitmap, sizeof(BITMAP), &bmp) )
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
BOOL result;
|
||||||
|
|
||||||
|
switch ( uState )
|
||||||
|
{
|
||||||
|
case wxDSB_NORMAL:
|
||||||
|
case wxDSB_SELECTED:
|
||||||
|
{
|
||||||
|
// uses image list functions to draw
|
||||||
|
// - normal bitmap with support transparency
|
||||||
|
// (image list internally create mask etc.)
|
||||||
|
// - blend bitmap with the background colour
|
||||||
|
// (like default selected items)
|
||||||
|
HIMAGELIST hIml = ::ImageList_Create(bmp.bmWidth, bmp.bmHeight,
|
||||||
|
ILC_COLOR32 | ILC_MASK, 1, 1);
|
||||||
|
::ImageList_Add(hIml, hBitmap, NULL);
|
||||||
|
UINT fStyle = uState == wxDSB_SELECTED ? ILD_SELECTED : ILD_NORMAL;
|
||||||
|
result = ::ImageList_Draw(hIml, 0, hDC, x, y, fStyle);
|
||||||
|
::ImageList_Destroy(hIml);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxDSB_DISABLED:
|
||||||
|
result = ::DrawState(hDC, NULL, NULL, (LPARAM)hBitmap, 0, x, y,
|
||||||
|
bmp.bmWidth, bmp.bmHeight,
|
||||||
|
DST_BITMAP | DSS_DISABLED);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG( _T("DrawStateBitmap: unknown wxDSBStates value") );
|
||||||
|
result = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // wxUSE_OWNER_DRAWN
|
#endif // wxUSE_OWNER_DRAWN
|
||||||
|
Reference in New Issue
Block a user