JNA как конвертировать wparam в класс - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь переписать свою программу на c ++ в java jna stuff. Я использую библиотеку User32 и некоторую клиентскую библиотеку.

У меня есть вопрос о преобразовании значения из WPARAM (это указатель) в некоторую структуру.В моем случае в мой класс.Это функция обратного вызова в Java + JNA

public WinDef.LRESULT callback(WinDef.HWND hwnd, int uMsg, WinDef.WPARAM wParam, WinDef.LPARAM lParam) {
    if(uMsg == WinUser.WM_CREATE){
        System.out.println("CREATE");
    }else if (uMsg == WM_COMMLIBX) {
        System.out.println("New WM_COMMLIBX");

    } else {
        return User32.INSTANCE.DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    return new WinDef.LRESULT(0);
}

Это мой пример класса:

public class CallbackData {
char[] tagname = new char[129];
char[] source= new char[129];
char[] value= new char[129];
char quality;
}

Теперь, если там uMsg будет равен WM_COMMLIBX, я хочу прочитать структуру.Я написал программу на c ++, и мое будущее было:

typedef struct {
char tagname[129];
char source[129];
char value[129];
char quality;
}NotificationCallbackData;

И я сделал это следующим образом:

NotificationCallbackData *pData = (NotificationCallbackData *)wParam;
pData->tagname;

И это сработало.Может ли кто-нибудь помочь мне, как сделать это в Java с помощью JNA?

...