// translations between HIMETRIC units (which OLE likes) and pixels (which are
// liked by all the others) - implemented in msw/utilsexc.cpp
extern void HIMETRICToPixel(LONG *x, LONG *y);
+extern void HIMETRICToPixel(LONG *x, LONG *y, HDC hdcRef);
extern void PixelToHIMETRIC(LONG *x, LONG *y);
+extern void PixelToHIMETRIC(LONG *x, LONG *y, HDC hdcRef);
// Windows convention of the mask is opposed to the wxWidgets one, so we need
// to invert the mask each time we pass one/get one to/from Windows
extern
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
// will fail on system with multiple monitors where the coords may be negative
//
private:
HDC m_hdc;
- DECLARE_NO_COPY_CLASS(ScreenHDC)
+ wxDECLARE_NO_COPY_CLASS(ScreenHDC);
};
// the same as ScreenHDC but for window DCs
HWND m_hwnd;
HDC m_hdc;
- DECLARE_NO_COPY_CLASS(WindowHDC)
+ wxDECLARE_NO_COPY_CLASS(WindowHDC);
};
// the same as ScreenHDC but for memory DCs: creates the HDC compatible with
private:
HDC m_hdc;
- DECLARE_NO_COPY_CLASS(MemoryHDC)
+ wxDECLARE_NO_COPY_CLASS(MemoryHDC);
};
// a class which selects a GDI object into a DC in its ctor and deselects in
HDC m_hdc;
HGDIOBJ m_hgdiobj;
- DECLARE_NO_COPY_CLASS(SelectInHDC)
+ wxDECLARE_NO_COPY_CLASS(SelectInHDC);
};
// a class which cleans up any GDI object
private:
HDC m_hdc;
- DECLARE_NO_COPY_CLASS(HDCClipper)
+ wxDECLARE_NO_COPY_CLASS(HDCClipper);
};
// set the given map mode for the life time of this object
HDC m_hdc;
int m_modeOld;
- DECLARE_NO_COPY_CLASS(HDCMapModeChanger)
+ wxDECLARE_NO_COPY_CLASS(HDCMapModeChanger);
};
#define wxCHANGE_HDC_MAP_MODE(hdc, mm) \
class GlobalPtr
{
public:
+ // default ctor, call Init() later
+ GlobalPtr()
+ {
+ m_hGlobal = NULL;
+ }
+
// allocates a block of given size
- GlobalPtr(size_t size, unsigned flags = GMEM_MOVEABLE)
+ void Init(size_t size, unsigned flags = GMEM_MOVEABLE)
{
m_hGlobal = ::GlobalAlloc(flags, size);
if ( !m_hGlobal )
wxLogLastError(_T("GlobalAlloc"));
}
+ GlobalPtr(size_t size, unsigned flags = GMEM_MOVEABLE)
+ {
+ Init(size, flags);
+ }
+
~GlobalPtr()
{
if ( m_hGlobal && ::GlobalFree(m_hGlobal) )
private:
HGLOBAL m_hGlobal;
- DECLARE_NO_COPY_CLASS(GlobalPtr)
+ wxDECLARE_NO_COPY_CLASS(GlobalPtr);
};
// when working with global pointers (which is unfortunately still necessary
{
if ( m_hGlobal && !GlobalUnlock(m_hGlobal) )
{
-#ifdef __WXDEBUG__
// this might happen simply because the block became unlocked
DWORD dwLastError = ::GetLastError();
if ( dwLastError != NO_ERROR )
{
wxLogApiError(_T("GlobalUnlock"), dwLastError);
}
-#endif // __WXDEBUG__
}
}
HGLOBAL m_hGlobal;
void *m_ptr;
- DECLARE_NO_COPY_CLASS(GlobalPtrLock)
+ wxDECLARE_NO_COPY_CLASS(GlobalPtrLock);
};
// register the class when it is first needed and unregister it in dtor