X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/308978f6aa40cd791d9ba0cd437a404e68d30734..1ec46a5b35233f3c69c5b73e4b0b36f44c650633:/src/msw/utils.cpp?ds=inline diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 3d64ac1705..8e907f1bd2 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -38,7 +38,7 @@ // In some mingws there is a missing extern "C" int the winsock header, // so we put it here just to be safe. Note that this must appear _before_ -// #include "wx/msw/private.h" which itself includes , as this +// #include "wx/msw/private.h" which itself includes , as this // one in turn includes unless we define WIN32_LEAN_AND_MEAN. // #if defined(__WIN32__) && !defined(__TWIN32__) && ! (defined(__GNUWIN32__) && !defined(__MINGW32__)) @@ -423,7 +423,7 @@ const wxChar* wxGetHomeDir(wxString *pstr) return strDir.c_str(); } -wxChar *wxGetUserHome(const wxString& user) +wxChar *wxGetUserHome(const wxString& WXUNUSED(user)) { // VZ: the old code here never worked for user != "" anyhow! Moreover, it // returned sometimes a malloc()'d pointer, sometimes a pointer to a @@ -437,7 +437,7 @@ bool wxDirExists(const wxString& dir) { #if defined(__WIN32__) DWORD attribs = GetFileAttributes(dir); - return ((attribs != -1) && (attribs & FILE_ATTRIBUTE_DIRECTORY)); + return ((attribs != (DWORD)-1) && (attribs & FILE_ATTRIBUTE_DIRECTORY)); #else // Win16 #ifdef __BORLANDC__ struct ffblk fileInfo; @@ -463,6 +463,16 @@ bool wxDirExists(const wxString& dir) bool wxGetEnv(const wxString& var, wxString *value) { +#ifdef __WIN16__ + const wxChar* ret = wxGetenv(var); + if (ret) + { + *value = ret; + return TRUE; + } + else + return FALSE; +#else // first get the size of the buffer DWORD dwRet = ::GetEnvironmentVariable(var, NULL, 0); if ( !dwRet ) @@ -478,6 +488,7 @@ bool wxGetEnv(const wxString& var, wxString *value) } return TRUE; +#endif } bool wxSetEnv(const wxString& var, const wxChar *value) @@ -502,7 +513,7 @@ bool wxSetEnv(const wxString& var, const wxChar *value) // process management // ---------------------------------------------------------------------------- -int wxKill(long pid, int sig) +int wxKill(long WXUNUSED(pid), int WXUNUSED(sig)) { // TODO use SendMessage(WM_QUIT) and TerminateProcess() if needed @@ -573,7 +584,7 @@ wxString wxGetOsDescription() case VER_PLATFORM_WIN32_WINDOWS: str.Printf(_("Windows 9%c"), - info.dwMinorVersion == 0 ? _T('5') : _T('9')); + info.dwMinorVersion == 0 ? _T('5') : _T('8')); if ( !wxIsEmpty(info.szCSDVersion) ) { str << _T(" (") << info.szCSDVersion << _T(')'); @@ -617,7 +628,7 @@ int wxGetOsVersion(int *majorVsn, int *minorVsn) *majorVsn = info.dwMajorVersion; if (minorVsn) *minorVsn = info.dwMinorVersion; - + switch ( info.dwPlatformId ) { case VER_PLATFORM_WIN32s: @@ -990,10 +1001,22 @@ void wxGetMousePosition( int* x, int* y ) // Return TRUE if we have a colour display bool wxColourDisplay() { - ScreenHDC dc; - int noCols = GetDeviceCaps(dc, NUMCOLORS); + // this function is called from wxDC ctor so it is called a *lot* of times + // hence we optimize it a bit but doign the check only once + // + // this should be MT safe as only the GUI thread (holding the GUI mutex) + // can call us + static int s_isColour = -1; + + if ( s_isColour == -1 ) + { + ScreenHDC dc; + int noCols = ::GetDeviceCaps(dc, NUMCOLORS); + + s_isColour = (noCols == -1) || (noCols > 2); + } - return (noCols == -1) || (noCols > 2); + return s_isColour != 0; } // Returns depth of screen @@ -1020,6 +1043,24 @@ void wxDisplaySizeMM(int *width, int *height) if ( height ) *height = GetDeviceCaps(dc, VERTSIZE); } +void wxClientDisplayRect(int *x, int *y, int *width, int *height) +{ +#ifdef __WIN16__ + *x = 0; *y = 0; + wxDisplaySize(width, height); +#else + // Determine the desktop dimensions minus the taskbar and any other + // special decorations... + RECT r; + + SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0); + if (x) *x = r.left; + if (y) *y = r.top; + if (width) *width = r.right - r.left; + if (height) *height = r.bottom - r.top; +#endif +} + // --------------------------------------------------------------------------- // window information functions @@ -1081,9 +1122,9 @@ wxString WXDLLEXPORT wxGetWindowClass(WXHWND hWnd) WXWORD WXDLLEXPORT wxGetWindowId(WXHWND hWnd) { #ifndef __WIN32__ - return GetWindowWord((HWND)hWnd, GWW_ID); + return (WXWORD)GetWindowWord((HWND)hWnd, GWW_ID); #else // Win32 - return GetWindowLong((HWND)hWnd, GWL_ID); + return (WXWORD)GetWindowLong((HWND)hWnd, GWL_ID); #endif // Win16/32 }