/*
* This file is part of VLCJ.
*
* VLCJ is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* VLCJ is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with VLCJ. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright 2009-2016 Caprica Software Limited.
*/
package uk.co.caprica.vlcj.player.embedded.windows;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.win32.W32APIOptions;
/**
* Partial implementation of the Win32 User API.
*/
public interface ExtendedUser32 extends User32 {
/**
* Native library instance.
*/
ExtendedUser32 INSTANCE = (ExtendedUser32)Native.loadLibrary("user32", ExtendedUser32.class, W32APIOptions.DEFAULT_OPTIONS);
int SC_RESTORE = 0x0000f120;
int WS_THICKFRAME = 0x00040000;
int WS_CAPTION = 0x00c00000;
int WS_EX_DLGMODALFRAME = 0x00000001;
int WS_EX_WINDOWEDGE = 0x00000100;
int WS_EX_CLIENTEDGE = 0x00000200;
int WS_EX_STATICEDGE = 0x00020000;
int SWP_NOZORDER = 0x0004;
int SWP_NOACTIVATE = 0x0010;
int SWP_FRAMECHANGED = 0x0020;
DWORD MONITOR_DEFAULTTONEAREST = new DWORD(2);
/**
* Is the window zoomed (maximised) or not?
*
* @param hWnd native window handle
* @return <code>true</code> if the window is zoomed; <code>false</code> if it is not
*/
boolean IsZoomed(HWND hWnd);
/**
* Get a native monitor handle from a window handle.
*
* @param hWnd native window handle
* @param dwFlags flags
* @return native monitor handle
*/
Pointer MonitorFromWindow(HWND hWnd, DWORD dwFlags);
/**
* Get native monitor information.
*
* @param hMonitor native monitor handle
* @param lpMonitorInfo structure to receive monitor information
* @return <code>true</code> on success; <code>false</code> otherwise
*/
boolean GetMonitorInfoA(Pointer hMonitor, MONITORINFO lpMonitorInfo);
/**
* Send a message to a native window.
*
* @param hWnd native window handle
* @param Msg message identifier
* @param wParam message parameter
* @param lParam message parameter
* @return result
*/
LRESULT SendMessage(HWND hWnd, int Msg, WPARAM wParam, LPARAM lParam);
}