Use custom draw in wxMSW wxHeaderCtrl to support colours
Add a helper wxMSWImpl::CustomDraw class which will be reused in the other places too and, for now, use it just to implement support for custom colours in wxHeaderCtrl. Notice that the control took care of the custom font on its anyhow and that background colour is ignored when themes are enabled, so the net effect of this change is that now changing the header foreground colour works, while it was ignored before.
This commit is contained in:
54
include/wx/msw/private/customdraw.h
Normal file
54
include/wx/msw/private/customdraw.h
Normal file
@@ -0,0 +1,54 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/msw/private/customdraw.h
|
||||
// Purpose: Helper for implementing custom drawing support in wxMSW
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2016-04-16
|
||||
// Copyright: (c) 2016 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_MSW_CUSTOMDRAW_H_
|
||||
#define _WX_MSW_CUSTOMDRAW_H_
|
||||
|
||||
#include "wx/itemattr.h"
|
||||
|
||||
#include "wx/msw/wrapcctl.h"
|
||||
|
||||
namespace wxMSWImpl
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// CustomDraw: inherit from this class and forward NM_CUSTOMDRAW to it
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class CustomDraw
|
||||
{
|
||||
public:
|
||||
// Trivial default ctor needed for non-copyable class.
|
||||
CustomDraw()
|
||||
{
|
||||
}
|
||||
|
||||
// Implementation of NM_CUSTOMDRAW handler, returns one of CDRF_XXX
|
||||
// constants, possibly CDRF_DODEFAULT if custom drawing is not necessary.
|
||||
LPARAM HandleCustomDraw(LPARAM lParam);
|
||||
|
||||
private:
|
||||
// Return true if we need custom drawing at all.
|
||||
virtual bool HasCustomDrawnItems() const = 0;
|
||||
|
||||
// Return the attribute to use for the given item, can return NULL if this
|
||||
// item doesn't need to be custom-drawn.
|
||||
virtual const wxItemAttr* GetItemAttr(DWORD_PTR dwItemSpec) const = 0;
|
||||
|
||||
|
||||
// Set the colours and font for the specified HDC, return CDRF_NEWFONT if
|
||||
// the font was changed.
|
||||
LPARAM HandleItemPrepaint(const wxItemAttr& attr, HDC hdc);
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(CustomDraw);
|
||||
};
|
||||
|
||||
} // namespace wxMSWImpl
|
||||
|
||||
#endif // _WX_MSW_CUSTOMDRAW_H_
|
Reference in New Issue
Block a user