don't crash in wxGetWindowXXX() if HWND is 0

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12895 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2001-12-07 00:08:02 +00:00
parent be050baf48
commit 5acc0d5f32

View File

@ -1381,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 =
int len = 256; // some starting value
#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);
for ( ;; )
{
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;
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)