Как мне вернуть логическое значение как WinDef.LRESULT?
Я пытаюсь реализовать Windows Restart Manager в своей Java-программе, и я дошел до того, что получаю сообщения из Windows и выполняю обратный вызов, который выглядит следующим образом:
WindowProc proc = (hwnd, msg, wp, lp) -> {
if (msg == WM_QUERYENDSESSION && lp.intValue() == ENDSESSION_CLOSEAPP) {
// Here I need to return true to signify that the application is ready to quit.
}
// Pass the message to the default window procedure
return user32.DefWindowProc(hwnd, msg, wp, lp);
};
где WindowProc
выглядит так:
private interface WindowProc extends StdCallLibrary.StdCallCallback {
WinDef.LRESULT callback(WinDef.HWND hwnd, int msg, WinDef.WPARAM wp, WinDef.LPARAM lp);
}
В соответствии с руководящими принципами Restart Manager для приложений:
Диспетчер перезапуска запрашивает приложения с графическим интерфейсом для отключения, отправив уведомление WM_QUERYENDSESSION, в котором для параметра lParam установлено значение ENDSESSION_CLOSEAPP (0x1). [...] Приложения с графическим интерфейсом должны прослушивать сообщение WM_QUERYENDSESSION и возвращать значение TRUE, если приложение готово к закрытию и перезапуску. [...]
Как мне на самом деле вернуться true
когда возвращаемое значение является WinDef.LRESULT
? Я так понимаю, это указатель, и как-то мне нужно построить логическое значение Win32 и вернуть указатель на него?