0

有人对这个有经验么?

我有一个由第三方编写的应用程序,它使用 SendMessage API 调用来使用 Visual Basic 6 附带的树控件的扩展功能。

在桌面和 Windows 2000 Server 上的 Citrix 4 下,这一切都可以正常工作(并且已经完成了 3-4 年)。在我们当前在 Windows 2003 Server 上设置的 Citrix 5 下,它在控制台上运行良好,但在 Presentation Server Client 中运行良好;当 SendMessage() 调用与 TVM_GETITEM 或 TVM_SETITEM 消息一起使用时,整个应用程序崩溃,没有错误消息没有日志条目,什么都没有。

我已经在 Citrix 下构建了一个 VB6 开发环境,当您在 Presentation Server Client 下单步执行代码时,同样的事情也会发生在 IDE 中。

我通常会期望传递给 SendMessage() 调用的参数结构中出现错误,但无论如何 VB6 都非常棘手,所以我认为它每次都会在 Windows 上失败。Citrix客户端下一定有区别。

我在 Google、Citrix 网站等上找不到任何关于该问题的参考。

任何指针,想法建议等表示赞赏。

4

2 回答 2

0

我对 Citrix/Presentation 服务器一无所知,但您可以选择的最后一种选择可能是尝试 VB5 通用控件库 (comctl32.ocx) 中的树视图。

(我只建议这样做,因为 VB6 树视图(mscomctl.ocx)与“核心”win32 通用控件树视图(comctl32.dll)无关 - 它是一个完全自定义的实现,因此对树视图 API 的支持有限(不能例如设置后退/前景色),而 VB5 版本使用真实的东西。

于 2010-06-23T20:36:37.920 回答
0

TVITEM通过限制mask这种方式,确保您只检索属性:

.mask = .mask And &H7F

...在打电话之前SendMessage。你不能在那里打一个 &FFFF 或 -1,因为 TVM_GET/SETITEM 期望在新版本的通用控件中扩展接收缓冲区。新版本的结构重命名为TVITEMEX.

于 2010-06-22T14:45:23.547 回答