我在 Windows 应用程序中有一个 ListBox,它列出了聊天会话中的人员。这定义如下:
Win32::API::Struct->typedef('UserItem', qw {
USHORT uid;
TCHAR realName[256];
TCHAR aliasName[256];
}
) or die "Typedef error $! \n";
my $user_data = Win32::API::Struct->new('UserItem');
现在我想向窗口发送一条 LB_GETITEMDATA 消息,以获取结构定义的与会者项目详细信息。
使用 Win32::API,我这样做:
my $LB_GETITEMDATA = 0x0199;
my $SendMessage = Win32::API->new("user32", "SendMessage", "NNNN", "S");
... # Here is the code to find the window handle, which is $hwnd.
$user_data = $SendMessage->Call($hwnd, $LB_GETITEMDATA, 0, 0); # Get the first item.
现在,我认为 $user_data 结构将包含第一项的详细信息,但它实际上是 undef 并且我也没有得到任何 LB_ERR。我究竟做错了什么?