如何使用 libvncclient 显示光标形状更改

How to show cursor shape changes with libvncclient?

本文关键字:光标 何使用 libvncclient 显示      更新时间:2023-10-16

我正在使用libvncclient(libvncserver的一部分(和Qt开发一个多查看器VNC客户端。 这有点挑战性,但我终于让应用程序运行良好,除了它不会显示来自服务器的光标形状变化。 我想克服这个问题,这样我就可以与全世界分享这个软件项目,就像我与大多数其他项目一样。

我已经尝试过这样做来使libvnc客户端显示光标形状更改:

client->appData.useRemoteCursor = false;

这不会显示帧缓冲区中的光标更改。 接下来,我尝试自己处理光标更改,使用:

client->appData.useRemoteCursor = true;
client->GotCursorShape = got_cursor_shape_change;

虽然当服务器上发生光标形状更改时会调用got_cursor_shape_change回调,但光标图像的缓冲区 rcSource 和光标掩码的缓冲区 rcMask 不是有效的图像。

我已经在互联网上搜索了有关此问题的帮助,但除了官方文档之外,资源非常少。 我就此问题联系了开发人员,但他们说我尝试过的方法应该有效。

编辑:此外,其他查看器,例如TightVNC,TigerVNC,gtk-vnc等都显示来自服务器的光标形状更改,因此我知道它正在正确发送更改。

有没有人知道我应该尝试什么?

提前谢谢你。

此问题已解决。

问题是在我正在测试的远程计算机上安装了非常旧版本的TightVNC(2.0.x(。 更新(到 2.7.x(后,远程计算机的光标可见,并且形状更改发生在我的查看器中。 以下是有效的方法:

client->appData.useRemoteCursor = false;