1

我目前正在探索NativeBoost。以为我将从一个简单的事件挂钩开始。为了定义回调,我对NBFFICallback我的 fnSpec 进行了子类化并添加了返回类型为LRESULT.

fnSpec
    ^ 'LRESULT ( INT nCode, LPARAM lParam , WPARAM wParam)'

在我使用它实例化它之后

mycallback := MyCallback on: someBlock.

Unable to resolve external type: 这给了 我一个错误NBFFICallout >> resolveType: aTypeName

在这里,我发现类型的绑定是从requestorwhich is nil 中查找的,因此它将从类本身中查找NBNativeFunctionGen,因此类型不会被解析。

不知何故,我相信如果类型被解析,我将能够创建回调,然后将它传递给我的钩子函数。我对吗?

此外,是否应该以某种方式(不触及实际的 NB 代码)将我的对象放在我有引用 Win32 类型(NBWinTypes)的共享池中,requestor并以这种方式解析类型?

简而言之,如何将特定类型添加到回调中。

谢谢。

4

1 回答 1

1

我不确定,我手头没有要检查的 Windows 机器,但这些类型是在NBWinTypes共享池中定义的

因此,我认为您应该使用 ffi 调用将其作为 poolDictionary 包含在类中。

Object subclass: #MyClass
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: 'NBWinTypes'
    category: 'NativeBoost-Win32'
于 2013-05-23T09:34:56.280 回答