X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eadd7bd2cbef3ca0bde3e93ad9671a783e4e90b0..ad9c5aeec6cdf4624671defad8d5febd6aac29b7:/src/msw/utils.cpp diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 686ff7d697..590486daf8 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -31,9 +31,11 @@ #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/app.h" - #include "wx/cursor.h" #include "wx/intl.h" #include "wx/log.h" +#if wxUSE_GUI + #include "wx/cursor.h" +#endif #endif //WX_PRECOMP // In some mingws there is a missing extern "C" int the winsock header, @@ -103,8 +105,6 @@ extern "C" { #include "wx/ioswrap.h" -#include "wx/ioswrap.h" - /* Need to undef new if including crtdbg.h */ # ifdef new # undef new @@ -454,7 +454,9 @@ bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree) if ( path.empty() ) return FALSE; -#ifdef __WIN32__ +// old w32api don't have ULARGE_INTEGER +#if defined(__WIN32__) && \ + (!defined(__GNUWIN32__) || wxCHECK_W32API_VERSION( 0, 3 )) // GetDiskFreeSpaceEx() is not available under original Win95, check for // it typedef BOOL (*GetDiskFreeSpaceEx_t)(LPCTSTR, @@ -463,7 +465,7 @@ bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree) PULARGE_INTEGER); GetDiskFreeSpaceEx_t - pGetDiskFreeSpaceEx = ::GetProcAddress + pGetDiskFreeSpaceEx = (GetDiskFreeSpaceEx_t)::GetProcAddress ( ::GetModuleHandle(_T("kernel32.dll")), #if wxUSE_UNICODE @@ -501,6 +503,10 @@ bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree) else #endif // Win32 { + // there's a problem with drives larger than 2GB, GetDiskFreeSpaceEx() + // should be used instead - but if it's not available, fall back on + // GetDiskFreeSpace() nevertheless... + DWORD lSectorsPerCluster, lBytesPerSector, lNumberOfFreeClusters, @@ -519,8 +525,6 @@ bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree) return FALSE; } - // there's a problem with drives larger than 2GB on non Win32!! - // let's calculate it, nevertheless.... wxLongLong lBytesPerCluster = lSectorsPerCluster; lBytesPerCluster *= lBytesPerSector; @@ -1377,59 +1381,47 @@ void wxClientDisplayRect(int *x, int *y, int *width, int *height) wxString WXDLLEXPORT wxGetWindowText(WXHWND hWnd) { wxString str; - int len = GetWindowTextLength((HWND)hWnd) + 1; - GetWindowText((HWND)hWnd, str.GetWriteBuf(len), len); - str.UngetWriteBuf(); + + if ( hWnd ) + { + int len = GetWindowTextLength((HWND)hWnd) + 1; + ::GetWindowText((HWND)hWnd, str.GetWriteBuf(len), len); + str.UngetWriteBuf(); + } return str; } wxString WXDLLEXPORT wxGetWindowClass(WXHWND hWnd) { -#ifdef __WXMICROWIN__ - // MICROWIN_TODO - return wxEmptyString; -#else wxString str; - int len = 256; // some starting value - - for ( ;; ) + // MICROWIN_TODO +#ifndef __WXMICROWIN__ + if ( hWnd ) { - // as we've #undefined GetClassName we must now manually choose the - // right function to call - int count = - - #ifndef __WIN32__ - GetClassName - #else // Win32 - #ifdef UNICODE - GetClassNameW - #else // !Unicode - #ifdef __TWIN32__ - GetClassName - #else // !Twin32 - GetClassNameA - #endif // Twin32/!Twin32 - #endif // Unicode/ANSI - #endif // Win16/32 - ((HWND)hWnd, str.GetWriteBuf(len), len); + int len = 256; // some starting value - str.UngetWriteBuf(); - if ( count == len ) + for ( ;; ) { - // the class name might have been truncated, retry with larger - // buffer - len *= 2; - } - else - { - break; + int count = ::GetClassName((HWND)hWnd, str.GetWriteBuf(len), len); + + str.UngetWriteBuf(); + if ( count == len ) + { + // the class name might have been truncated, retry with larger + // buffer + len *= 2; + } + else + { + break; + } } } +#endif // !__WXMICROWIN__ return str; -#endif } WXWORD WXDLLEXPORT wxGetWindowId(WXHWND hWnd)