Index: /Include/Classes/System/DateTime.ab
===================================================================
--- /Include/Classes/System/DateTime.ab	(revision 236)
+++ /Include/Classes/System/DateTime.ab	(revision 237)
@@ -157,5 +157,5 @@
 
 	Function DayOfWeek() As Long 'As DayOfWeek
-		Return (Ticks \ TimeSpan.TicksPerDay) Mod 7 - 1
+		Return ((Ticks \ TimeSpan.TicksPerDay) Mod 7) As Long - 1
 	End Function
 
Index: /Include/Classes/System/Environment.ab
===================================================================
--- /Include/Classes/System/Environment.ab	(revision 236)
+++ /Include/Classes/System/Environment.ab	(revision 237)
@@ -1,4 +1,5 @@
 ' System/Environment.ab
 
+#require <api_psapi.sbp>
 #require <Classes/System/OperatingSystem.ab>
 
@@ -8,5 +9,5 @@
 
 	Static Function CommandLine() As String
-		If cmdLine = Nothing Then
+		If Object.ReferenceEquals(cmdLine, Nothing) Then
 #ifdef __STRING_IS_NOT_UNICODE
 			cmdLine = New String(GetCommandLineA())
@@ -51,5 +52,5 @@
 
 	Static Function OSVersion() As OperatingSystem
-		If osVer = Nothing Then
+		If Object.ReferenceEquals(osVer, Nothing) Then
 			Dim vi As OSVERSIONINFO
 			GetVersionEx(vi)
@@ -71,8 +72,8 @@
 
 	Static Function SystemDirectory() As String
-		If sysDir = Nothing Then
+		If Object.ReferenceEquals(sysDir, Nothing) Then
 			Dim size = GetSystemDirectory(0, 0)
-			Dim p = _System_malloc(SizeOf (TCHAR) * size)
-			Dim len = GetSystemDirectory(size, p)
+			Dim p = _System_malloc(SizeOf (TCHAR) * size) As PTSTR
+			Dim len = GetSystemDirectory(p, size)
 			sysDir = New String(p, len As Long)
 			_System_free(p)
@@ -94,12 +95,14 @@
 
 	Static Function WorkingSet() As Int64
-		Dim pGetProcessMemoryInfo As *Function(Process As HANDLE, ByRef mc As PPROCESS_MEMORY_COUNTERS, cb As DWord) As BOOL
+		TypeDef PFNGetProcessMemoryInfo = *Function(Process As HANDLE, ByRef mc As PROCESS_MEMORY_COUNTERS, cb As DWord) As BOOL
+		Dim pGetProcessMemoryInfo As PFNGetProcessMemoryInfo
 		Dim hmodPSAPI = LoadLibrary("PSAPI.DLL")
 		If hmodPSAPI = 0 Then Return 0
-		pGetProcessMemoryInfo = GetProcAddress(hmodPSAPI, ToMBStr("GetProcessMemoryInfo"))
+		pGetProcessMemoryInfo = GetProcAddress(hmodPSAPI, ToMBStr("GetProcessMemoryInfo")) As PFNGetProcessMemoryInfo
 		If pGetProcessMemoryInfo <> 0 Then
-			Dim mc As PPROCESS_MEMORY_COUNTERS
+			Dim mc As PROCESS_MEMORY_COUNTERS
 			If pGetProcessMemoryInfo(GetCurrentProcess(), mc, Len (mc)) <> FALSE Then
 				WorkingSet = mc.WorkingSetSize
+				
 			End If
 		End If
@@ -117,5 +120,5 @@
 		Dim src = ToTCStr(s)
 		Dim size = ExpandEnvironmentStrings(src, 0, 0)
-		Dim dst = _System_malloc(SizeOf (TCHAR) * size)
+		Dim dst = _System_malloc(SizeOf (TCHAR) * size) As PTSTR
 		ExpandEnvironmentStrings(src, dst, size)
 		ExpandEnvironmentVariables = New String(dst, size - 1)
Index: /Include/Classes/System/Math.ab
===================================================================
--- /Include/Classes/System/Math.ab	(revision 236)
+++ /Include/Classes/System/Math.ab	(revision 237)
@@ -194,5 +194,5 @@
 
 	Static Function Floor(value As Double) As Long
-		return Int(value)
+		Return Int(value)
 	End Function
 
@@ -201,25 +201,24 @@
 	'GetType
 
-	Static Function IEEERemainder(value1 As Double, value2 As Double) As Double
-		Dim q As Double
-		If value2=0 then return _System_GetNaN()
-		q=value1/value2
-		If q<>Int(q) then
-			If q+0.5<>Int(q+0.5) then
-				q=Int(q+0.5)
-			ElseIf Int(q+0.5)=Int(q*2+1)/2 then
-				q=Int(q+0.5)
+	Static Function IEEERemainder(x As Double, y As Double) As Double
+		If y = 0 Then Return _System_GetNaN()
+		Dim q = x / y
+		If q <> Int(q) Then
+			If q + 0.5 <> Int(q + 0.5) Then
+				q = Int(q + 0.5)
+			ElseIf Int(q + 0.5) = Int(q * 2 + 1) / 2 Then
+				q = Int(q + 0.5)
 			Else
-				q=Int(q-0.5)
+				q = Int(q - 0.5)
 			End If
 		End If
-		If x-y*q=0 then
-			If x>0 then
-				return +0
+		If x - y * q = 0 Then
+			If x > 0 Then
+				Return +0
 			Else
-				return -0
+				Return -0
 			End If
 		Else
-			return x-y*q
+			Return x-y*q
 		End If
 	End Function
@@ -252,5 +251,5 @@
 
 	Static Function Log10(x As Double) As Double
-		Return Math.Log(x) / Math.Log(10)
+		Return Math.Log(x) / _System_Ln10
 	End Function
 
@@ -582,5 +581,5 @@
 
 	Static Function Truncate(x As Double) As Double
-		return Fix(x)
+		Return Fix(x)
 	End Function
 
@@ -611,4 +610,5 @@
 Const _System_HalfPI = (_System_PI * 0.5)
 Const _System_InverseHalfPI = (2 / _System_PI) '1 / (PI / 2)
+Const _System_Ln10 = 2.3025850929940456840179914546844 '10の自然対数
 
 #endif '__SYSTEM_MATH_AB__
Index: /Include/Classes/System/Object.ab
===================================================================
--- /Include/Classes/System/Object.ab	(revision 236)
+++ /Include/Classes/System/Object.ab	(revision 237)
@@ -10,5 +10,6 @@
 	' 2つのオブジェクトが等しいかどうかを判断する
 	Virtual Function Equals( object As Object ) As Boolean
-		If This.GetHashCode() = object.GetHashCode() Then
+		If ObjPtr(This) = ObjPtr(object) Then
+'		If This.GetHashCode() = object.GetHashCode() Then
 			Return True
 		Else
@@ -16,9 +17,10 @@
 		End If
 	End Function
+	
 	Static Function Equals( objectA As Object, objectB As Object ) As Boolean
 		If ObjPtr(objectA) = NULL /*objectA = Nothing*/ Then
 			Return ObjPtr(objectB) = NULL 'objectB = Nothing
 		Else
-			Return objectA.Equals( objectB )
+			Return objectA.Equals(objectB)
 		End If
 	End Function
@@ -35,5 +37,5 @@
 	' ハッシュコードを取得する
 	Virtual Function GetHashCode() As Long
-		Return VarPtr( This ) As Long
+		Return ObjPtr( This ) As Long
 	End Function
 
Index: /Include/Classes/System/OperatingSystem.ab
===================================================================
--- /Include/Classes/System/OperatingSystem.ab	(revision 236)
+++ /Include/Classes/System/OperatingSystem.ab	(revision 237)
@@ -17,13 +17,13 @@
 
 	Sub OperatingSystem(vi As OSVERSIONINFOA)
-		pf = vi.dwPlatformId As PlatformID,
+		pf = vi.dwPlatformId As PlatformID
 		ver = New Version(vi.dwMajorVersion, vi.dwMinorVersion, vi.dwBuildNumber)
-		sp = vi.szCSDVersion
+		sp = New String(vi.szCSDVersion As PCSTR)
 	End Sub
 
 	Sub OperatingSystem(vi As OSVERSIONINFOW)
-		pf = vi.dwPlatformId As PlatformID,
+		pf = vi.dwPlatformId As PlatformID
 		ver = New Version(vi.dwMajorVersion, vi.dwMinorVersion, vi.dwBuildNumber)
-		sp = vi.szCSDVersion
+		sp = New String(vi.szCSDVersion As PCSTR)
 	End Sub
 
Index: /Include/Classes/System/String.ab
===================================================================
--- /Include/Classes/System/String.ab	(revision 236)
+++ /Include/Classes/System/String.ab	(revision 237)
@@ -184,14 +184,14 @@
 
 	Static Function CompareOrdinal(x As String, indexX As Long, y As String, indexY As Long, length As Long) As Long
-		If x = Nothing Then
-			If y = Nothing Then
+		If Object.ReferenceEquals(x, Nothing) Then
+			If Object.ReferenceEquals(y, Nothing) Then
 				Return 0
 			Else
 				Return -1
 			End If
-		ElseIf y = Nothing Then
+		ElseIf Object.ReferenceEquals(y, Nothing) Then
 			Return 1
 		End If
-		Return _System_StrCmpN(VarPtr(x.Chars[indexX]), VarPtr(y.Chars[indexY]), length)
+		Return _System_StrCmpN(VarPtr(x.Chars[indexX]), VarPtr(y.Chars[indexY]), length As SIZE_T)
 	End Function
 
@@ -344,8 +344,8 @@
 #ifdef __STRING_IS_NOT_UNICODE
 		With Concat
-			Dim lenA = MultiByteToWideChar(CP_THREAD_ACP, 0, text, len, 0, 0, 0, 0)
+			Dim lenA = WideCharToMultiByte(CP_THREAD_ACP, 0, text, len, 0, 0, 0, 0)
 			.AllocStringBuffer(m_Length + lenA)
 			memcpy(.Chars, This.Chars, m_Length)
-			MultiByteToWideChar(CP_THREAD_ACP, 0, text, len, VarPtr(.Chars[m_Length]), lenA, 0, 0)
+			WideCharToMultiByte(CP_THREAD_ACP, 0, text, len, VarPtr(.Chars[m_Length]), lenA, 0, 0)
 			.Chars[m_Length + lenA] = 0
 		End With
@@ -473,5 +473,5 @@
 		temp.AllocStringBuffer(length)
 		memcpy(temp.Chars, VarPtr(Chars[startIndex]), SizeOf (StrChar) * length)
-		Chars[m_Length] = 0
+		temp.Chars[m_Length] = 0
 		Return temp
 	End Function
@@ -527,8 +527,8 @@
 	End Function
 
-	Const Function Replace(oldStr As *StrChar, newStr As *StrChar)
+	Const Function Replace(oldStr As *StrChar, newStr As *StrChar) As String
 		If oldStr = 0 Then Debug 'Throw ArgumentNullException
 		If newStr = 0 Then newStr = ""
-		Return ReplaceCore(oldStr, lstrlen(oldStr), newStr, lstrlen(newStr)) As String
+		Return ReplaceCore(oldStr, lstrlen(oldStr), newStr, lstrlen(newStr)) 
 	End Function
 
Index: /Include/Classes/System/Threading/Thread.ab
===================================================================
--- /Include/Classes/System/Threading/Thread.ab	(revision 236)
+++ /Include/Classes/System/Threading/Thread.ab	(revision 237)
@@ -52,5 +52,5 @@
 	End Sub
 
-	Sub Thread(hThread As HANDLE,dwThreadId As DWord,dummy As Long)
+	Sub Thread(hThread As HANDLE, dwThreadId As DWord, dummy As Long)
 		m_hThread=hThread
 		m_dwThreadId=dwThreadId
@@ -61,12 +61,7 @@
 
 
-	Function Equals( thread As Thread ) As Boolean
-		If m_dwThreadId = thread.m_dwThreadId Then
-			Return True
-		End If
-		Return False
-	End Function
-
-
+	Function Equals(thread As Thread) As Boolean
+		Return m_dwThreadId = thread.m_dwThreadId
+	End Function
 
 	'-----------------------
@@ -74,4 +69,5 @@
 	'-----------------------
 
+	
 	'Priority Property
 	Sub Priority(value As ThreadPriority)
@@ -87,4 +83,5 @@
 		Return m_dwThreadId
 	End Function
+
 
 
@@ -314,5 +311,5 @@
 
 	'カレントスレッドを取得
-	Function CurrentThread(ByRef obj_Thread As Thread) As BOOL
+	Function CurrentThread(ByRef obj_Thread As Thread) As Boolean
 		Dim dwNowThreadId As DWord
 		dwNowThreadId=GetCurrentThreadId()
@@ -322,9 +319,9 @@
 			If ppobj_Thread[i]->ThreadId=dwNowThreadId Then
 				obj_Thread.Thread(ByVal ppobj_Thread[i])
-				Return 1
-			End If
-		Next
-
-		Return 0
+				Return True
+			End If
+		Next
+
+		Return False
 	End Function
 
Index: /Include/Classes/System/Threading/WaitHandle.ab
===================================================================
--- /Include/Classes/System/Threading/WaitHandle.ab	(revision 236)
+++ /Include/Classes/System/Threading/WaitHandle.ab	(revision 237)
@@ -63,12 +63,12 @@
 
 	Static Function SignalAndWait(ByRef toSignal As WaitHandle, ByRef toWaitOn As WaitHandle, millisecondsTimeout As Long, exitContext As BOOL) As BOOL
-		Dim pSignalObjectAndWait = GetProcAddress(GetModuleHandle("Kernel32.dll"), "SignalObjectAndWait") _
-			As *Function(hObjectToSignal As HANDLE, hObjectToWaitOn As HANDLE, dwMilliseconds As DWord, bAlertable As DWord) As DWord
+		TypeDef PFNSignalObjectAndWait = *Function(hObjectToSignal As HANDLE, hObjectToWaitOn As HANDLE, dwMilliseconds As DWord, bAlertable As DWord) As DWord
+		Dim pSignalObjectAndWait = GetProcAddress(GetModuleHandle("Kernel32.dll"), "SignalObjectAndWait") As PFNSignalObjectAndWait
 		If pSignalObjectAndWait = 0 Then
 			' PlatformNotSupportedException
 			Debug
-			ExitThread(0)
+			ExitThread(-1)
 		End If
-		Return WaitHandle.AfterWait(pSignalAndWait(toSignal.Handle, toWaitOn.Handle, millisecondsTimeout As DWord), 1)
+		Return WaitHandle.AfterWait(pSignalObjectAndWait(toSignal.Handle, toWaitOn.Handle, millisecondsTimeout As DWord, FALSE), 1)
 	End Function
 
Index: /Include/WinNT.ab
===================================================================
--- /Include/WinNT.ab	(revision 236)
+++ /Include/WinNT.ab	(revision 237)
@@ -6374,26 +6374,26 @@
 
 Sub /*FORCEINLINE*/ TpSetCallbackCleanupGroup(ByRef CallbackEnviron As TP_CALLBACK_ENVIRON, CleanupGroup As PTP_CLEANUP_GROUP, CleanupGroupCancelCallback As PTP_CLEANUP_GROUP_CANCEL_CALLBACK)
-	CallbackEnviron->CleanupGroup = CleanupGroup
-	CallbackEnviron->CleanupGroupCancelCallback = CleanupGroupCancelCallback
+	CallbackEnviron.CleanupGroup = CleanupGroup
+	CallbackEnviron.CleanupGroupCancelCallback = CleanupGroupCancelCallback
 End Sub
 
 Sub /*FORCEINLINE*/ TpSetCallbackActivationContext(ByRef CallbackEnviron As TP_CALLBACK_ENVIRON, ActivationContext As PACTIVATION_CONTEXT)
-	CallbackEnviron->ActivationContext = ActivationContext
+	CallbackEnviron.ActivationContext = ActivationContext
 End Sub
 
 Sub /*FORCEINLINE*/ TpSetCallbackNoActivationContext(ByRef CallbackEnviron As TP_CALLBACK_ENVIRON)
-	CallbackEnviron->ActivationContext = (-1 As LONG_PTR) As PACTIVATION_CONTEXT
+	CallbackEnviron.ActivationContext = (-1 As LONG_PTR) As PACTIVATION_CONTEXT
 End Sub
 
 Sub /*FORCEINLINE*/ TpSetCallbackLongFunction(ByRef CallbackEnviron As TP_CALLBACK_ENVIRON)
-	CallbackEnviron->Flags = 1 'u.s.LongFunction = 1
+	CallbackEnviron.Flags = 1 'u.s.LongFunction = 1
 End Sub
 
 Sub /*FORCEINLINE*/ TpSetCallbackRaceWithDll(ByRef CallbackEnviron As TP_CALLBACK_ENVIRON, DllHandle As VoidPtr)
-	CallbackEnviron->RaceDll = DllHandle
+	CallbackEnviron.RaceDll = DllHandle
 End Sub
 
 Sub /*FORCEINLINE*/ TpSetCallbackFinalizationCallback(ByRef CallbackEnviron As TP_CALLBACK_ENVIRON, FinalizationCallback As PTP_SIMPLE_CALLBACK)
-	CallbackEnviron->FinalizationCallback = FinalizationCallback
+	CallbackEnviron.FinalizationCallback = FinalizationCallback
 End Sub
 
Index: /Include/api_winsock2.sbp
===================================================================
--- /Include/api_winsock2.sbp	(revision 236)
+++ /Include/api_winsock2.sbp	(revision 237)
@@ -49,5 +49,5 @@
 		Next
 		If i = .fd_count Then
-			If .fd_count < FD_SET_SIZE Then
+			If .fd_count < FD_SETSIZE Then
 				.fd_array[i] = fd
 				.fd_count++
Index: /Include/basic/command.sbp
===================================================================
--- /Include/basic/command.sbp	(revision 236)
+++ /Include/basic/command.sbp	(revision 237)
@@ -74,7 +74,7 @@
 Macro MSGBOX(hwnd As HWND, str As String)(title As String, boxType As DWord, ByRef retAns As DWord)
 	If VarPtr(retAns) Then
-		retAns = _System_MessageBox(hwnd, str, title, boxType)
+		retAns = _System_MessageBox(hwnd, ToSCStr(str), ToSCStr(title), boxType)
 	Else
-		_System_MessageBox(hwnd, str, title, boxType)
+		_System_MessageBox(hwnd, ToSCStr(str), ToSCStr(title), boxType)
 	End If
 End Macro
@@ -333,5 +333,5 @@
 			If length_buf>=length_num Then
 				'通常時
-				_System_FillChar(VarPtr(buffer[i3]), length_buf - length_num, &h20) 'Asc(" ")
+				_System_FillChar(VarPtr(buffer.Chars[i3]), length_buf - length_num, &h20) 'Asc(" ")
 
 				i3 += length_buf - length_num
@@ -345,5 +345,5 @@
 
 				If dec > 0 Then
-					memcpy(VarPtr(buffer[i3]), temp2, SizeOf (StrChar) * length_num)
+					memcpy(VarPtr(buffer.Chars[i3]), temp2, SizeOf (StrChar) * length_num)
 				Else
 					buffer[i3] = &H30
@@ -353,5 +353,5 @@
 			Else
 				'表示桁が足りないとき
-				_System_FillChar(VarPtr(buffer[i3]), length_buf,&h23) 'Asc("#")
+				_System_FillChar(VarPtr(buffer.Chars[i3]), length_buf, &h23) 'Asc("#")
 				i3 += length_buf
 			End If
@@ -378,7 +378,5 @@
 			i2++
 
-			'lstrcat(StrPtr(buffer)+i3,_System_UsingStrData[ParmNum])
-			memcpy(VarPtr(buffer[i3 + lstrlen(VarPtr(buffer[i3]))]), _System_UsingStrData[ParmNum], _
-				SizeOf (StrChar) * lstrlen(_System_UsingStrData[ParmNum]))
+			lstrcat(VarPtr(buffer.Chars[i3]), _System_UsingStrData[ParmNum])
 			i3 += lstrlen(_System_UsingStrData[ParmNum])
 		ElseIf UsingStr[i2]=Asc("&") Then
@@ -396,7 +394,7 @@
 					i5=i4
 				Else
-					_System_FillChar(VarPtr(buffer[i3]), i4, &h20) 'Asc(" ")
+					_System_FillChar(VarPtr(buffer.Chars[i3]), i4, &h20) 'Asc(" ")
 				End If
-				memcpy(VarPtr(buffer[i3]), _System_UsingStrData[ParmNum], SizeOf (StrChar) * i5)
+				memcpy(VarPtr(buffer.Chars[i3]), _System_UsingStrData[ParmNum], SizeOf (StrChar) * i5)
 				i3 += i4
 			Else
@@ -431,5 +429,5 @@
 End Macro
 Macro GET(FileNumber As Long, RecodeNumber As Long, ByRef lpBuffer As String)
-	Dim dwAccessByte As Long
+	Dim dwAccessByte As DWord
 
 	FileNumber--
@@ -444,5 +442,5 @@
 End Macro
 Macro PUT(FileNumber As Long, RecodeNumber As Long, ByRef lpBuffer As String)
-	Dim dwAccessByte As Long
+	Dim dwAccessByte As DWord
 
 	FileNumber--
Index: /Include/basic/function.sbp
===================================================================
--- /Include/basic/function.sbp	(revision 236)
+++ /Include/basic/function.sbp	(revision 237)
@@ -508,5 +508,5 @@
 	i2=0
 	Do
-		Oct$[i2] = &h30 +((num \ CDWord(8 ^ i)) And &H07) ' &h30 = Asc("0")
+		Oct$[i2] = &h30 +((num \ CDWord(8 ^ i)) And &H07) As StrChar ' &h30 = Asc("0")
 		If i=0 Then Exit Do
 		i--
@@ -715,5 +715,5 @@
 	Dim i As Long
 	For i=0 To num-1
-		memcpy(VarPtr(String$[i*length]), StrPtr(buf), SizeOf (StrChar) * length)
+		memcpy(VarPtr(String$.Chars[i*length]), StrPtr(buf), SizeOf (StrChar) * length)
 	Next
 End Function
@@ -1194,6 +1194,6 @@
 	Dim i = 0 As SIZE_T
 	For i = 0 To ELM(size)
-		_System_StrCmp = s1[i] - s2[i]
-		If _System_StrCmp <> 0 Then
+		_System_StrCmpN = s1[i] - s2[i]
+		If _System_StrCmpN <> 0 Then
 			Exit Function
 		End If
@@ -1204,6 +1204,6 @@
 	Dim i = 0 As SIZE_T
 	For i = 0 To ELM(size)
-		_System_StrCmp = s1[i] - s2[i]
-		If _System_StrCmp <> 0 Then
+		_System_StrCmpN = s1[i] - s2[i]
+		If _System_StrCmpN <> 0 Then
 			Exit Function
 		End If
Index: /Include/system/exception.ab
===================================================================
--- /Include/system/exception.ab	(revision 236)
+++ /Include/system/exception.ab	(revision 237)
@@ -82,8 +82,8 @@
 		'新しいip, spをセット
 #ifdef _WIN64
-		context.Rip = ppTryLayers[nTryLayers - 1]->AddressOfCatch
+		context.Rip = ppTryLayers[nTryLayers - 1]->AddressOfCatch As QWord
 		context.Rsp = ppTryLayers[nTryLayers - 1]->StackPtr
 #else
-		context.Eip = ppTryLayers[nTryLayers - 1]->AddressOfCatch
+		context.Eip = ppTryLayers[nTryLayers - 1]->AddressOfCatch As DWord
 		context.Esp = ppTryLayers[nTryLayers - 1]->StackPtr
 #endif
Index: /Include/system/gc.sbp
===================================================================
--- /Include/system/gc.sbp	(revision 236)
+++ /Include/system/gc.sbp	(revision 237)
@@ -245,8 +245,5 @@
 
 	Static Function IsNull( object As Object ) As Boolean
-		If ObjPtr( object ) = NULL Then
-			Return True
-		End If
-		Return False
+		Return Object.ReferenceEquals(object, Nothing)
 	End Function
 
Index: /Include/system/string.sbp
===================================================================
--- /Include/system/string.sbp	(revision 236)
+++ /Include/system/string.sbp	(revision 237)
@@ -92,9 +92,9 @@
 End Function
 
-Function GetStr(ByRef s As String, ByRef mbs As PSTR) As SIZE_T
+Function GetStr(s As String, ByRef mbs As PSTR) As SIZE_T
 	Return GetStr(s.Chars, s.Length As SIZE_T, mbs)
 End Function
 
-Function GetStr(ByRef s As String, ByRef wcs As PWSTR) As SIZE_T
+Function GetStr(s As String, ByRef wcs As PWSTR) As SIZE_T
 	Return GetStr(s.Chars, s.Length As SIZE_T, wcs)
 End Function
@@ -116,6 +116,6 @@
 End Function
 
-Function GetWCStr(ByRef s As String, ByRef wcs As PWSTR) As SIZE_T
-	Return GetStr(s.Chars, s.Length, wcs)
+Function GetWCStr(s As String, ByRef wcs As PWSTR) As SIZE_T
+	Return GetStr(s.Chars, s.Length As SIZE_T, wcs)
 End Function
 
@@ -136,6 +136,6 @@
 End Function
 
-Function GetMBStr(ByRef s As String, ByRef mbs As PSTR) As SIZE_T
-	Return GetStr(s.Chars, s.Length, mbs)
+Function GetMBStr(s As String, ByRef mbs As PSTR) As SIZE_T
+	Return GetStr(s.Chars, s.Length As SIZE_T, mbs)
 End Function
 
@@ -156,5 +156,5 @@
 End Function
 
-Function GetTCStr(ByRef s As String, ByRef wcs As PCTSTR) As SIZE_T
+Function GetTCStr(s As String, ByRef tcs As PCTSTR) As SIZE_T
 	Return GetStr(s.Chars, s.Length As SIZE_T, wcs)
 End Function
@@ -176,5 +176,5 @@
 End Function
 
-Function GetSCStr(ByRef s As String, ByRef wcs As *StrChar) As SIZE_T
+Function GetSCStr(s As String, ByRef ss As *StrChar) As SIZE_T
 	Return GetStr(s.Chars, s.Length As SIZE_T, wcs)
 End Function
@@ -196,5 +196,5 @@
 End Function
 
-Function ToWCStr(ByRef s As String) As PWSTR
+Function ToWCStr(s As String) As PWSTR
 	GetStr(s.Chars, s.Length As SIZE_T, ToWCStr)
 End Function
@@ -216,5 +216,5 @@
 End Function
 
-Function ToMBStr(ByRef s As String) As PSTR
+Function ToMBStr(s As String) As PSTR
 	GetStr(s.Chars, s.Length As SIZE_T, ToMBStr)
 End Function
@@ -236,5 +236,5 @@
 End Function
 
-Function ToTCStr(ByRef s As String) As PCTSTR
+Function ToTCStr(s As String) As PCTSTR
 	GetStr(s.Chars, s.Length As SIZE_T, ToTCStr)
 End Function
@@ -256,5 +256,5 @@
 End Function
 
-Function ToSCStr(ByRef s As String) As *StrChar
+Function ToSCStr(s As String) As *StrChar
 	GetStr(s.Chars, s.Length As SIZE_T, ToSCStr)
 End Function
Index: /Include/windows/WindowHandle.sbp
===================================================================
--- /Include/windows/WindowHandle.sbp	(revision 236)
+++ /Include/windows/WindowHandle.sbp	(revision 237)
@@ -374,5 +374,5 @@
 	Const Function ScreenToClient(ByRef rc As RECT) As Boolean
 		Dim ppt = VarPtr(rc) As *POINTAPI
-		Return _System_ScreenToClient(hwnd, ppt[0]) And _System_ScreenToClient(hwnd, ppt[1])
+		Return (_System_ScreenToClient(hwnd, ppt[0]) <> FALSE And _System_ScreenToClient(hwnd, ppt[1]) <> FALSE) As Boolean
 	End Function
 
