В моем Java-приложении я пытаюсь изменить курсор мыши на 32-битном файле argb с прозрачностью.
Я хочу сделать вызов jni, чтобы изменить его из Windows, потому что изменение курсора в java дает мне очень плохой курсор мыши (вся прозрачность либо 0x00, либо 0xFF)
В данный момент я пытаюсь использовать функцию SetClassLong с параметрами:
Этот фрагмент кода работает в примере программы тестирования windows32 atl:
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);
но не в dll, вызываемом из java через jni
Если у кого-то есть лучший подход или решение в этом случае, спасибо
Приветствия