X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/afb7489128719ac8999b037d49a0c28636d59558..86fdd27b451ec92f4573f125fec73c44421ee744:/src/msw/utils.cpp diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 1433988261..697de7232a 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -301,7 +301,23 @@ static wxTimer *wxTheSleepTimer = NULL; void wxUsleep(unsigned long milliseconds) { +#ifdef __WIN32__ ::Sleep(milliseconds); +#else + if (inTimer) + return; + + wxTheSleepTimer = new wxSleepTimer; + inTimer = TRUE; + wxTheSleepTimer->Start(milliseconds); + while (inTimer) + { + if (wxTheApp->Pending()) + wxTheApp->Dispatch(); + } + delete wxTheSleepTimer; + wxTheSleepTimer = NULL; +#endif } void wxSleep(int nSecs) @@ -780,6 +796,10 @@ bool wxDirExists(const wxString& dir) #endif } +// --------------------------------------------------------------------------- +// window information functions +// --------------------------------------------------------------------------- + wxString WXDLLEXPORT wxGetWindowText(WXHWND hWnd) { wxString str; @@ -790,6 +810,58 @@ wxString WXDLLEXPORT wxGetWindowText(WXHWND hWnd) return str; } +wxString WXDLLEXPORT wxGetWindowClass(WXHWND hWnd) +{ + wxString str; + + int len = 256; // some starting value + + for ( ;; ) + { + // 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); + + str.UngetWriteBuf(); + if ( count == len ) + { + // the class name might have been truncated, retry with larger + // buffer + len *= 2; + } + else + { + break; + } + } + + return str; +} + +WXWORD WXDLLEXPORT wxGetWindowId(WXHWND hWnd) +{ +#ifndef __WIN32__ + return GetWindowWord((HWND)hWnd, GWW_ID); +#else // Win32 + return GetWindowLong((HWND)hWnd, GWL_ID); +#endif // Win16/32 +} + #if 0 //------------------------------------------------------------------------ // wild character routines