]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/private.h
Upported combobox changes and another fix.
[wxWidgets.git] / include / wx / msw / private.h
index e61c66cc7cfd551d74f776031fb437e7246ac5f4..a1308f5b479de9772c16cf9b5b70e615a5ceec9f 100644 (file)
 
 #include <windows.h>
 
+
+#if defined (__WXWINCE__)
+    #include <wingdi.h>     // RGB, COLORREF
+    #include <winuser.h>    // Global Namespaces ::GetKeyState, ::GetWindowRect
+#endif
+
+
 #ifdef __WXMICROWIN__
     // Extra prototypes and symbols not defined by MicroWindows
     #include "wx/msw/microwin.h"
@@ -28,6 +35,9 @@
 // undefine conflicting symbols which were defined in windows.h
 #include "wx/msw/winundef.h"
 
+// Include fixes for MSLU:
+#include "wx/msw/mslu.h"
+
 #include "wx/log.h"
 
 class WXDLLEXPORT wxFont;
@@ -78,12 +88,15 @@ WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT;
 
 // this defines a CASTWNDPROC macro which casts a pointer to the type of a
 // window proc
-#if defined(STRICT) || defined(__GNUC__)
+#if defined(__WXWINCE__)
+    typedef FARPROC WndProcCast;
+#elif defined(STRICT) || defined(__GNUC__)
     typedef WNDPROC WndProcCast;
 #else
     typedef FARPROC WndProcCast;
 #endif
 
+
 #define CASTWNDPROC (WndProcCast)
 
 // ---------------------------------------------------------------------------
@@ -200,18 +213,54 @@ extern LONG APIENTRY _EXPORT
 #if wxUSE_GUI
 
 #include <wx/gdicmn.h>
+#include <wx/colour.h>
 
 // make conversion from wxColour and COLORREF a bit less painful
 inline COLORREF wxColourToRGB(const wxColour& c)
+{
+    return RGB(c.Red(), c.Green(), c.Blue());
+}
+
+inline COLORREF wxColourToPalRGB(const wxColour& c)
 {
     return PALETTERGB(c.Red(), c.Green(), c.Blue());
 }
 
+inline wxColour wxRGBToColour(COLORREF rgb)
+{
+    return wxColour(GetRValue(rgb), GetGValue(rgb), GetBValue(rgb));
+}
+
 inline void wxRGBToColour(wxColour& c, COLORREF rgb)
 {
     c.Set(GetRValue(rgb), GetGValue(rgb), GetBValue(rgb));
 }
 
+// get the standard colour map for some standard colours - see comment in this
+// function to understand why is it needed and when should it be used
+//
+// it returns a wxCOLORMAP (can't use COLORMAP itself here as comctl32.dll
+// might be not included/available) array of size wxSTD_COLOUR_MAX
+//
+// NB: if you change these colours, update wxBITMAP_STD_COLOURS in the
+//     resources as well: it must have the same number of pixels!
+enum wxSTD_COLOUR
+{
+    wxSTD_COL_BTNTEXT,
+    wxSTD_COL_BTNSHADOW,
+    wxSTD_COL_BTNFACE,
+    wxSTD_COL_BTNHIGHLIGHT,
+    wxSTD_COL_MAX,
+};
+
+struct WXDLLEXPORT wxCOLORMAP
+{
+    COLORREF from, to;
+};
+
+// this function is implemented in src/msw/window.cpp
+extern wxCOLORMAP *wxGetStdColourMap();
+
 // copy Windows RECT to our wxRect
 inline void wxCopyRECTToRect(const RECT& r, wxRect& rect)
 {
@@ -298,6 +347,8 @@ public:
 
 private:
     HDC m_hdc;
+
+    DECLARE_NO_COPY_CLASS(ScreenHDC)
 };
 
 // the same as ScreenHDC but for memory DCs: creates the HDC in ctor and
@@ -306,12 +357,14 @@ class MemoryHDC
 {
 public:
     MemoryHDC() { m_hdc = ::CreateCompatibleDC(NULL); }
-   ~MemoryHDC() { ::DeleteObject(m_hdc);              }
+   ~MemoryHDC() { ::DeleteDC(m_hdc);                  }
 
     operator HDC() const { return m_hdc; }
 
 private:
     HDC m_hdc;
+
+    DECLARE_NO_COPY_CLASS(MemoryHDC)
 };
 
 // a class which selects a GDI object into a DC in its ctor and deselects in
@@ -330,6 +383,8 @@ public:
 private:
    HDC m_hdc;
    HGDIOBJ m_hgdiobj;
+
+    DECLARE_NO_COPY_CLASS(SelectInHDC)
 };
 
 // ---------------------------------------------------------------------------
@@ -366,7 +421,7 @@ private:
 #define GetHfontOf(font)        ((HFONT)(font).GetHFONT())
 
 #define GetHpalette()           ((HPALETTE)GetHPALETTE())
-#define GetHpaletteOf(pal)      ((HPALETTE)(pal)->GetHPALETTE())
+#define GetHpaletteOf(pal)      ((HPALETTE)(pal).GetHPALETTE())
 
 #define GetHrgn()               ((HRGN)GetHRGN())
 #define GetHrgnOf(rgn)          ((HRGN)(rgn).GetHRGN())
@@ -398,8 +453,6 @@ WXDLLEXPORT void wxSetInstance(HINSTANCE hInst);
 extern HCURSOR wxGetCurrentBusyCursor();    // from msw/utils.cpp
 extern const wxCursor *wxGetGlobalCursor(); // from msw/cursor.cpp
 
-WXDLLEXPORT wxWindow* wxFindWinFromHandle(WXHWND hWnd);
-
 WXDLLEXPORT void wxGetCharSize(WXHWND wnd, int *x, int *y, const wxFont *the_font);
 WXDLLEXPORT void wxFillLogFont(LOGFONT *logFont, const wxFont *font);
 WXDLLEXPORT wxFont wxCreateFontFromLogFont(const LOGFONT *logFont);
@@ -411,9 +464,6 @@ WXDLLEXPORT void wxScrollBarEvent(WXHWND hbar, WXWORD wParam, WXWORD pos);
 // Find maximum size of window/rectangle
 WXDLLEXPORT extern void wxFindMaxSize(WXHWND hwnd, RECT *rect);
 
-WXDLLEXPORT wxWindow* wxFindControlFromHandle(WXHWND hWnd);
-WXDLLEXPORT void wxAddControlHandle(WXHWND hWnd, wxWindow *item);
-
 // Safely get the window text (i.e. without using fixed size buffer)
 WXDLLEXPORT extern wxString wxGetWindowText(WXHWND hWnd);
 
@@ -424,8 +474,9 @@ WXDLLEXPORT extern wxString wxGetWindowClass(WXHWND hWnd);
 // is, for mainly historical reasons, signed)
 WXDLLEXPORT extern WXWORD wxGetWindowId(WXHWND hWnd);
 
-// check if hWnd's WNDPROC is wndProc. Return true if yes, false if they are different
-extern bool wxCheckWindowWndProc(WXHWND hWnd, WXFARPROC wndProc);
+// check if hWnd's WNDPROC is wndProc. Return true if yes, false if they are
+// different
+WXDLLEXPORT extern bool wxCheckWindowWndProc(WXHWND hWnd, WXFARPROC wndProc);
 
 // Does this window style specify any border?
 inline bool wxStyleHasBorder(long style)
@@ -434,11 +485,24 @@ inline bool wxStyleHasBorder(long style)
                      wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0;
 }
 
-// find the window for HWND which is part of some wxWindow, returns just the
-// corresponding wxWindow for HWND which just is one
+// ----------------------------------------------------------------------------
+// functions mapping HWND to wxWindow
+// ----------------------------------------------------------------------------
+
+// this function simply checks whether the given hWnd corresponds to a wxWindow
+// and returns either that window if it does or NULL otherwise
+WXDLLEXPORT extern wxWindow* wxFindWinFromHandle(WXHWND hWnd);
+
+// find the window for HWND which is part of some wxWindow, i.e. unlike
+// wxFindWinFromHandle() above it will also work for "sub controls" of a
+// wxWindow.
 //
-// may return NULL
-extern wxWindow *wxGetWindowFromHWND(WXHWND hwnd);
+// returns the wxWindow corresponding to the given HWND or NULL.
+WXDLLEXPORT extern wxWindow *wxGetWindowFromHWND(WXHWND hwnd);
+
+
+// Get the size of an icon
+WXDLLEXPORT extern wxSize wxGetHiconSize(HICON hicon);
 
 #endif // wxUSE_GUI