将LPARAM转换为Java-Pojo

时间:2016-01-11 15:46:17

标签: jna

我有一个c应用程序和一个java应用程序。我与jna沟通以获得c程序的结果。 我有一个jna-Callback函数:

public LRESULT callback(HWND hWnd, int uMsg, WPARAM wParam, LPARAM lParam) {

switch (uMsg) {
case WinUserConstants.WM_GRAB_BASE:
  System.out.println("WM_GRAB_BASE");
  return new LRESULT(1);

case WinUserConstants.WM_GRAB_TRANSFER_FINISHED:
  System.out.println("WM_GRAB_TRANSFER_FINISHED");
  return new LRESULT(1);

case WinUserConstants.WM_GRAB_IMAGE_SAVED:
  System.out.println("WM_GRAB_IMAGE_SAVED");
  return new LRESULT(1);
default:
  return User32.INSTANCE.DefWindowProc(hWnd, uMsg, wParam, lParam);
}

我需要WPARAM变量。我不能将WPARAM更改为String。如果我这样做,我的窗口显示没有控件。 WPARAM定义为“包含(wchar_t *)filename的内存上的HGLOBAL”。我需要该文件名并且无法访问c代码。

1 个答案:

答案 0 :(得分:0)

您可以使用WPARAM.toPointer().getWideString(0)提取字符串。

toPointer()有效地"演员"将WPARAM转换为指针值,然后可以从中提取(宽)本机C字符串。