我怎样才能让这个函数不生成“不在所有路径上返回值"?警告? [英] How can I make this function not generate a "doesn't return a value on all paths" warning?
问题描述
我意识到这是一个非常具体的问题,在此场景之外并没有太大帮助,尽管我确信它适用于具有相同问题的其他问题.我有一个函数可以递归搜索窗口(及其子窗口)以查找特定窗口,它完全按预期工作,但是它会导致函数不会在所有路径上返回值"警告.这是我整个程序中唯一的警告,虽然它可能很愚蠢,但我很想知道是否有办法阻止此错误发生,但仍然允许该函数正常工作.
I realize this is a very specific question, and not very helpful outside of this scenario, although I am sure it applies to other questions with the same problem. I have a function to recursively search through windows (and their child windows) to find specific ones, it works exactly as expected, however it causes "function doesn't return a value on all paths" warning. This is the only warning in my entire program, and although it might be silly, I'm interested in knowing if there is a way to stop this error from occurring, but still allowing the function to work properly.
Public Function FindQWidgetWindows() As Integer
Dim hWndStart As Integer = 0
Dim WindowText As String = "*"
Dim Classname As String = "QWidget"
Dim hwnd As Integer
Dim sWindowText As String
Dim sClassname As String
Dim r As Integer
Static level As Integer
If level = 0 Then
If hWndStart = 0 Then hWndStart = GetDesktopWindow()
End If
level = level + 1
hwnd = GetWindow(hWndStart, GW_CHILD)
Do Until hwnd = 0
Call FindQWidgetWindows()
'Get the window text and class name'
sWindowText = Space$(255)
r = GetWindowText(hwnd, sWindowText, 255)
sWindowText = Microsoft.VisualBasic.Left(sWindowText, r)
sClassname = Space$(255)
r = GetClassName(hwnd, sClassname, 255)
sClassname = Microsoft.VisualBasic.Left(sClassname, r)
If (sWindowText Like WindowText) And (sClassname Like Classname) Then
Dim aRECT As RECT
Dim hwndInt As Int32 = hwnd
GetWindowRect(hwndInt, aRECT)
FindQWidgetWindows = hwnd
'uncommenting the next line causes the routine to'
'only return the first matching window.'
'Exit Do'
End If
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop
level = level - 1
End Function
推荐答案
您依赖于这样一个事实,即 VB 会自动用您的函数名称声明一个返回变量.此变量可用作函数中的任何其他变量.所以它也可以得到一个默认的初始化.
You rely on the fact, that VB automatically declares a return variable with the name of your function. This variable can be used as any other variable in your function. So it also can get a default initialization.
正如已经提到的,您只能在非常嵌套的 If
语句中分配一个值.您应该简单地在 Do
循环之前和之前用
As already mentioned, you only assign a value in a very nested If
statement.
You should simply initialize your variable outside and before of your Do
-loop with something like
FindQWidgetWindows = Nothing
这篇关于我怎样才能让这个函数不生成“不在所有路径上返回值"?警告?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!