我的声明声明出了什么问题?

问题描述 投票:1回答:1

我最近修复了VB6应用程序中的一个错误,但我不确定到底出了什么问题。

令人讨厌的部分是CreateEvent的API声明错误。这就是API Viewer生成的内容:

Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" 
(lpEventAttributes As SECURITY_ATTRIBUTES, ...) As Long

下一个是错误声明,显然有人不想导入SECURITY_ATTRIBUTES结构...

Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" 
(lpEventAttributes As Any, ...) As Long

电话是:

Event = CreateEvent(Nothing, 0, 0, "MyEventName")

此调用在IDE中一直有效,但在编译后的.exe中却从未有效。 (CreateEvent总是返回0)我将声明更改为:Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" (ByVal lpEventAttributes As Any, ...) As Long

...并且有效。

现在我有点困惑:

为什么使用ByRef时参数SECURITY_ATTRIBUTES为什么要使用ByVal时必须为Any

    为什么错误的声明总是在IDE中起作用?
  • 我最近修复了VB6应用程序中的一个错误,但是我不确定到底出了什么问题。令人讨厌的部分是CreateEvent的API声明错误。这就是API Viewer生成的内容:声明...
vb6 winapi declare
1个回答
3
投票
Event = CreateEvent(ByVal 0&, 0, 0, "MyEventName")
© www.soinside.com 2019 - 2024. All rights reserved.