Я пытаюсь переписать свою программу на 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?