Попытка изменить значок курсора мыши в Windows с Java на вызов JNI - PullRequest
2 голосов
/ 03 июня 2011

В моем 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

Если у кого-то есть лучший подход или решение в этом случае, спасибо

Приветствия

1 Ответ

0 голосов
/ 03 июня 2011

Было ли что-то, что вы хотели сделать, что было невозможно с java.awt.Cursor ?

...