【发布时间】:2016-05-24 02:00:23
【问题描述】:
在 main 中使用包 lxn/win:
win.EnumChildWindows(hw, printme, 0)
然后在main之后:
func printme(HWND win.HANDLE, LPARAM uintptr) { //HWND hwnd, LPARAM lParam
spew.Dump(HWND)
}
我明白了:
.\test.go:40: cannot use printme (type func(win.HANDLE, uintptr)) as type uintptr in argument to win.EnumChildWindows
error:exit status 2
我不明白错误信息。
【问题讨论】:
-
为了改写错误,
printme参数的类型是uintptr,而您传递给它的是func(win.HANDLE, uintptr)。 -
该函数需要回调函数。我如何说服编译器?
-
你不能“说服”编译器 go 函数是一个 uintptr,因为那根本行不通。什么是
lxn/win,有没有使用EnumChildWindows函数的文档? -
lxn/win 是 windows user32.dll 的接口。除了标准之外,没有其他使用示例:lxn/win。我可以在github上问。
-
如果这是一个windows系统调用,你可能需要使用
syscall.NewCallback(或者syscall.NewCallbackDecl,我对windows一无所知。)