java - 尝试通过jni调用从Java更改Windows鼠标指针图标

标签 java winapi cursor java-native-interface mouse

在我的Java应用程序中,我试图使用具有透明度的argb 32位bmp文件来更改鼠标光标。

我想通过Windows进行jni调用来更改它,因为在Java中更改光标会给我一个非常糟糕的鼠标光标(所有透明度都是0x00或0xFF)

目前,我正在尝试使用功能SetClassLong作为参数:


来自Java的hWnd(我在方法http://download.oracle.com/javase/1.3/docs/guide/awt/AWT_Native_Interface.html之后得到它)
GCL_HCURSOR
和一个由原始argb 32位bmp缓冲区制成的游标


这段代码在示例win32 atl Windows测试程序中起作用:

HBITMAP hBitmap = (HBITMAP)CreateBitmap(32, 32, 1, 32, pRawBmpData); 
BITMAP bmp;
::GetObject(hBitmap, sizeof(BITMAP), &bmp);

HBITMAP hMask = ::CreateCompatibleBitmap(::GetDC(NULL), bmp.bmWidth, bmp.bmHeight);

ICONINFO ii = {0};
ii.fIcon = FALSE;
ii.hbmColor = hBitmap;
ii.hbmMask = hMask;
ii.xHotspot = 0;
ii.yHotspot = 0;

HCURSOR cursor = ::CreateIconIndirect(&ii);

SetCursor(cursor);
SetClassLong(hWnd, GCL_HCURSOR, (DWORD)cursor);


但是不在通过jni从Java调用的dll中

如果有人对这种情况有更好的方法或解决方案,谢谢

干杯

最佳答案

您是否想做java.awt.Cursor无法做到的事情?

关于java - 尝试通过jni调用从Java更改Windows鼠标指针图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6220810/

相关文章:

java - 快速局部图像凸起效果

windows - 从 Windows 上的同一对话框中选择文件或文件夹?

Android - 打开 SQLite 数据库

python - 从游标创建临时表

java - Android Studio 2 比较对象和 boolean 编译是否成功?

java - 如何从类获取对象到服务

java - MongoTemplate 按日期转换查找

c++ - 手动添加 vector 异常处理程序

c++ - 单击时关闭 PropertySheet 选项卡

android - 如何从 AsyncTask 查询另一个 Activity 中的游标?