我尝试将c ++程序重写为java jna的东西。我使用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;
这有效。 有人可以在JNA的帮助下帮助我在Java中做到这一点吗?