extern LONG APIENTRY _EXPORT
wxSubclassedGenericControlProc(WXHWND hWnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
-// ---------------------------------------------------------------------------
-// constants which might miss from some compilers' headers
-// ---------------------------------------------------------------------------
-
-#if !defined(__WIN32__) && !defined(WS_EX_CLIENTEDGE)
- #define WS_EX_CLIENTEDGE 0
-#endif
-
-#if defined(__WIN32__) && !defined(WS_EX_CLIENTEDGE)
- #define WS_EX_CLIENTEDGE 0x00000200L
-#endif
-
-#ifndef ENDSESSION_LOGOFF
- #define ENDSESSION_LOGOFF 0x80000000
-#endif
-
// ---------------------------------------------------------------------------
// useful macros and functions
// ---------------------------------------------------------------------------
// get the current state of SHIFT/CTRL keys
inline bool wxIsShiftDown()
{
- return (::GetKeyState(VK_SHIFT) & 0x100) != 0;
+// return (::GetKeyState(VK_SHIFT) & 0x100) != 0;
+ // Returns different negative values on WinME and WinNT,
+ // so simply test for negative value.
+ return ::GetKeyState(VK_SHIFT) < 0;
}
inline bool wxIsCtrlDown()
{
- return (::GetKeyState(VK_CONTROL) & 0x100) != 0;
+// return (::GetKeyState(VK_CONTROL) & 0x100) != 0;
+ // Returns different negative values on WinME and WinNT,
+ // so simply test for negative value.
+ return ::GetKeyState(VK_CONTROL) < 0;
}
// wrapper around GetWindowRect() and GetClientRect() APIs doing error checking
// small helper classes
// ---------------------------------------------------------------------------
+// a template to make initializing Windows styructs less painful: it zeroes all
+// the struct fields and also sets cbSize member to the correct value (and so
+// can be only used with structures which have this member...)
+template <class T>
+struct WinStruct : public T
+{
+ WinStruct()
+ {
+ ::ZeroMemory(this, sizeof(T));
+ cbSize = sizeof(T);
+ }
+};
+
+
// create an instance of this class and use it as the HDC for screen, will
// automatically release the DC going out of scope
class ScreenHDC
DECLARE_NO_COPY_CLASS(SelectInHDC)
};
-#ifdef __WATCOM__
-//FIXME why does watcom dislike this ?? CE 05 April 2003
-
// when working with global pointers (which is unfortunately still necessary
// sometimes, e.g. for clipboard) it is important to unlock them exactly as
// many times as we lock them which just asks for using a "smart lock" class
-class GlobalHandle
+class GlobalPtr
{
public:
- GlobalHandle(HGLOBAL hGlobal) : m_hGlobal(hGlobal)
+ GlobalPtr(HGLOBAL hGlobal) : m_hGlobal(hGlobal)
{
m_ptr = ::GlobalLock(hGlobal);
if ( !m_ptr )
}
}
- ~GlobalHandle()
+ ~GlobalPtr()
{
if ( !::GlobalUnlock(m_hGlobal) )
{
HGLOBAL m_hGlobal;
void *m_ptr;
- DECLARE_NO_COPY_CLASS(GlobalHandle)
+ DECLARE_NO_COPY_CLASS(GlobalPtr)
};
-#endif //__WATCOM__
// ---------------------------------------------------------------------------
// macros to make casting between WXFOO and FOO a bit easier: the GetFoo()
// returns Foo cast to the Windows type for oruselves, while GetFooOf() takes