mirror of
https://github.com/Ryujinx/Opentk.git
synced 2024-12-23 16:15:34 +00:00
Changed API.* to * in order to reflect changes in OpenTK.Platform.Windows.API.
Improved Disposable pattern implementation in most Windows classes.
This commit is contained in:
parent
1d72cb7ab9
commit
5144535b8e
|
@ -46,7 +46,7 @@ namespace OpenTK.Platform.Windows
|
||||||
using LONG_PTR = System.IntPtr;
|
using LONG_PTR = System.IntPtr;
|
||||||
|
|
||||||
using COLORREF = System.Int32;
|
using COLORREF = System.Int32;
|
||||||
using RECT = OpenTK.Platform.Windows.API.Rectangle;
|
using RECT = OpenTK.Platform.Windows.Rectangle;
|
||||||
|
|
||||||
using WNDPROC = System.IntPtr;
|
using WNDPROC = System.IntPtr;
|
||||||
|
|
||||||
|
@ -70,109 +70,13 @@ namespace OpenTK.Platform.Windows
|
||||||
PixelFormatDescriptorSize = (short)Marshal.SizeOf(typeof(PixelFormatDescriptor));
|
PixelFormatDescriptorSize = (short)Marshal.SizeOf(typeof(PixelFormatDescriptor));
|
||||||
}
|
}
|
||||||
|
|
||||||
#region --- Constants ---
|
internal static readonly short PixelFormatDescriptorSize;
|
||||||
|
internal static readonly short PixelFormatDescriptorVersion;
|
||||||
public struct Constants
|
internal static int RawInputSize;
|
||||||
{
|
internal static readonly int RawInputDeviceSize;
|
||||||
// Mouse indicator flags (found in winuser.h)
|
internal static readonly int RawInputHeaderSize;
|
||||||
public const int MOUSE_MOVE_RELATIVE = 0;
|
internal static readonly int RawInputDeviceListSize;
|
||||||
public const int MOUSE_MOVE_ABSOLUTE = 1;
|
internal static readonly int RawInputDeviceInfoSize;
|
||||||
public const int MOUSE_VIRTUAL_DESKTOP = 0x02; // the coordinates are mapped to the virtual desktop
|
|
||||||
public const int MOUSE_ATTRIBUTES_CHANGED = 0x04; // requery for mouse attributes
|
|
||||||
|
|
||||||
// Found in winuser.h
|
|
||||||
public const int KEYBOARD_OVERRUN_MAKE_CODE = 0xFF;
|
|
||||||
|
|
||||||
// WM_ACTIVATE state values (found in winuser.h)
|
|
||||||
public const int WA_INACTIVE = 0;
|
|
||||||
public const int WA_ACTIVE = 1;
|
|
||||||
public const int WA_CLICKACTIVE = 2;
|
|
||||||
|
|
||||||
// Window Messages (found in winuser.h)
|
|
||||||
public const int WM_NULL = 0x0000;
|
|
||||||
public const int WM_CREATE = 0x0001;
|
|
||||||
public const int WM_DESTROY = 0x0002;
|
|
||||||
public const int WM_MOVE = 0x0003;
|
|
||||||
public const int WM_SIZE = 0x0005;
|
|
||||||
public const int WM_ACTIVATE = 0x0006;
|
|
||||||
public const int WM_SETFOCUS = 0x0007;
|
|
||||||
public const int WM_KILLFOCUS = 0x0008;
|
|
||||||
public const int WM_ENABLE = 0x000A;
|
|
||||||
public const int WM_SETREDRAW = 0x000B;
|
|
||||||
public const int WM_SETTEXT = 0x000C;
|
|
||||||
public const int WM_GETTEXT = 0x000D;
|
|
||||||
public const int WM_GETTEXTLENGTH = 0x000E;
|
|
||||||
public const int WM_PAINT = 0x000F;
|
|
||||||
public const int WM_CLOSE = 0x0010;
|
|
||||||
// _WIN32_WCE
|
|
||||||
public const int WM_QUERYENDSESSION = 0x0011;
|
|
||||||
public const int WM_QUERYOPEN = 0x0013;
|
|
||||||
public const int WM_ENDSESSION = 0x0016;
|
|
||||||
public const int WM_QUIT = 0x0012;
|
|
||||||
public const int WM_ERASEBKGND = 0x0014;
|
|
||||||
public const int WM_SYSCOLORCHANGE = 0x0015;
|
|
||||||
public const int WM_SHOWWINDOW = 0x0018;
|
|
||||||
public const int WM_WININICHANGE = 0x001A;
|
|
||||||
// WINVER >= 0x400
|
|
||||||
public const int WM_SETTINGCHANGE = WM_WININICHANGE;
|
|
||||||
|
|
||||||
public const int WM_DEVMODECHANGE = 0x001B;
|
|
||||||
public const int WM_ACTIVATEAPP = 0x001C;
|
|
||||||
public const int WM_FONTCHANGE = 0x001D;
|
|
||||||
public const int WM_TIMECHANGE = 0x001E;
|
|
||||||
public const int WM_CANCELMODE = 0x001F;
|
|
||||||
public const int WM_SETCURSOR = 0x0020;
|
|
||||||
public const int WM_MOUSEACTIVATE = 0x0021;
|
|
||||||
public const int WM_CHILDACTIVATE = 0x0022;
|
|
||||||
public const int WM_QUEUESYNC = 0x0023;
|
|
||||||
|
|
||||||
public const int WM_GETMINMAXINFO = 0x0024;
|
|
||||||
|
|
||||||
public const int WM_WINDOWPOSCHANGING = 0x0046;
|
|
||||||
public const int WM_WINDOWPOSCHANGED = 0x0047;
|
|
||||||
|
|
||||||
// Keyboard events (found in winuser.h)
|
|
||||||
public const int WM_INPUT = 0x00FF; // Raw input. XP and higher only.
|
|
||||||
public const int WM_KEYDOWN = 0x0100;
|
|
||||||
public const int WM_KEYUP = 0x101;
|
|
||||||
public const int WM_SYSKEYDOWN = 0x0104;
|
|
||||||
public const int WM_SYSKEYUP = 0x0105;
|
|
||||||
public const int WM_COMMAND = 0x0111;
|
|
||||||
public const int WM_SYSCOMMAND = 0x0112;
|
|
||||||
public const int WM_ENTERIDLE = 0x121;
|
|
||||||
|
|
||||||
// Pixel types (found in wingdi.h)
|
|
||||||
public const byte PFD_TYPE_RGBA = 0;
|
|
||||||
public const byte PFD_TYPE_COLORINDEX = 1;
|
|
||||||
|
|
||||||
// Layer types (found in wingdi.h)
|
|
||||||
public const byte PFD_MAIN_PLANE = 0;
|
|
||||||
public const byte PFD_OVERLAY_PLANE = 1;
|
|
||||||
public const byte PFD_UNDERLAY_PLANE = unchecked((byte)-1);
|
|
||||||
|
|
||||||
// Device mode types (found in wingdi.h)
|
|
||||||
public const int DM_BITSPERPEL = 0x00040000;
|
|
||||||
public const int DM_PELSWIDTH = 0x00080000;
|
|
||||||
public const int DM_PELSHEIGHT = 0x00100000;
|
|
||||||
public const int DM_DISPLAYFLAGS = 0x00200000;
|
|
||||||
public const int DM_DISPLAYFREQUENCY = 0x00400000;
|
|
||||||
|
|
||||||
// ChangeDisplaySettings types (found in winuser.h)
|
|
||||||
public const int CDS_UPDATEREGISTRY = 0x00000001;
|
|
||||||
public const int CDS_TEST = 0x00000002;
|
|
||||||
public const int CDS_FULLSCREEN = 0x00000004;
|
|
||||||
|
|
||||||
// ChangeDisplaySettings results (found in winuser.h)
|
|
||||||
public const int DISP_CHANGE_SUCCESSFUL = 0;
|
|
||||||
public const int DISP_CHANGE_RESTART = 1;
|
|
||||||
public const int DISP_CHANGE_FAILED = -1;
|
|
||||||
|
|
||||||
// (found in winuser.h)
|
|
||||||
public const int ENUM_REGISTRY_SETTINGS = -2;
|
|
||||||
public const int ENUM_CURRENT_SETTINGS = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region --- Functions ---
|
#region --- Functions ---
|
||||||
|
|
||||||
|
@ -258,94 +162,6 @@ namespace OpenTK.Platform.Windows
|
||||||
IntPtr Instance,
|
IntPtr Instance,
|
||||||
IntPtr Param);
|
IntPtr Param);
|
||||||
|
|
||||||
public enum WindowStyle : int
|
|
||||||
{
|
|
||||||
Overlapped = 0x00000000,
|
|
||||||
Popup = unchecked((int)0x80000000),
|
|
||||||
Child = 0x40000000,
|
|
||||||
Minimize = 0x20000000,
|
|
||||||
Visible = 0x10000000,
|
|
||||||
Disabled = 0x08000000,
|
|
||||||
ClipSiblings = 0x04000000,
|
|
||||||
ClipChildren = 0x02000000,
|
|
||||||
Maximize = 0x01000000,
|
|
||||||
Caption = 0x00C00000, // Border | DialogFrame
|
|
||||||
Border = 0x00800000,
|
|
||||||
DialogFrame = 0x00400000,
|
|
||||||
VScroll = 0x00200000,
|
|
||||||
HScreen = 0x00100000,
|
|
||||||
SystemMenu = 0x00080000,
|
|
||||||
ThickFrame = 0x00040000,
|
|
||||||
Group = 0x00020000,
|
|
||||||
TabStop = 0x00010000,
|
|
||||||
|
|
||||||
MinimizeBox = 0x00020000,
|
|
||||||
MaximizeBox = 0x00010000,
|
|
||||||
|
|
||||||
Tiled = Overlapped,
|
|
||||||
Iconic = Minimize,
|
|
||||||
SizeBox = ThickFrame,
|
|
||||||
TiledWindow = OverlappedWindow,
|
|
||||||
|
|
||||||
// Common window styles:
|
|
||||||
OverlappedWindow = Overlapped | Caption | SystemMenu | ThickFrame | MinimizeBox | MaximizeBox,
|
|
||||||
PopupWindow = Popup | Border | SystemMenu,
|
|
||||||
ChildWindow = Child
|
|
||||||
}
|
|
||||||
|
|
||||||
[Flags]
|
|
||||||
public enum ExtendedWindowStyle : int
|
|
||||||
{
|
|
||||||
DialogModalFrame = 0x00000001,
|
|
||||||
NoParentNotify = 0x00000004,
|
|
||||||
Topmost = 0x00000008,
|
|
||||||
AcceptFiles = 0x00000010,
|
|
||||||
Transparent = 0x00000020,
|
|
||||||
|
|
||||||
// #if(WINVER >= 0x0400)
|
|
||||||
MdiChild = 0x00000040,
|
|
||||||
ToolWindow = 0x00000080,
|
|
||||||
WindowEdge = 0x00000100,
|
|
||||||
ClientEdge = 0x00000200,
|
|
||||||
ContextHelp = 0x00000400,
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
// #if(WINVER >= 0x0400)
|
|
||||||
Right = 0x00001000,
|
|
||||||
Left = 0x00000000,
|
|
||||||
RightToLeftReading = 0x00002000,
|
|
||||||
LeftToRightReading = 0x00000000,
|
|
||||||
LeftScrollbar = 0x00004000,
|
|
||||||
RightScrollbar = 0x00000000,
|
|
||||||
|
|
||||||
ControlParent = 0x00010000,
|
|
||||||
StaticEdge = 0x00020000,
|
|
||||||
ApplicationWindow = 0x00040000,
|
|
||||||
|
|
||||||
OverlappedWindow = WindowEdge | ClientEdge,
|
|
||||||
PaletteWindow = WindowEdge | ToolWindow | Topmost,
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
// #if(_WIN32_WINNT >= 0x0500)
|
|
||||||
Layered = 0x00080000,
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
// #if(WINVER >= 0x0500)
|
|
||||||
NoInheritLayout = 0x00100000, // Disable inheritence of mirroring by children
|
|
||||||
RightToLeftLayout = 0x00400000, // Right to left mirroring
|
|
||||||
// #endif /* WINVER >= 0x0500 */
|
|
||||||
|
|
||||||
// #if(_WIN32_WINNT >= 0x0501)
|
|
||||||
Composited = 0x02000000,
|
|
||||||
// #endif /* _WIN32_WINNT >= 0x0501 */
|
|
||||||
|
|
||||||
// #if(_WIN32_WINNT >= 0x0500)
|
|
||||||
NoActivate = 0x08000000
|
|
||||||
// #endif /* _WIN32_WINNT >= 0x0500 */
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region DestroyWindow
|
#region DestroyWindow
|
||||||
|
|
||||||
[DllImport("user32.dll", SetLastError = true)]
|
[DllImport("user32.dll", SetLastError = true)]
|
||||||
|
@ -423,35 +239,9 @@ namespace OpenTK.Platform.Windows
|
||||||
/// <param name="flags">Not used</param>
|
/// <param name="flags">Not used</param>
|
||||||
/// <returns>True if there is a message pending.</returns>
|
/// <returns>True if there is a message pending.</returns>
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity]
|
[System.Security.SuppressUnmanagedCodeSecurity]
|
||||||
[DllImport("User32.dll", CharSet = CharSet.Auto)]
|
[DllImport("User32.dll"), CLSCompliant(false)]
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
public static extern bool PeekMessage(
|
public static extern bool PeekMessage(ref MSG msg, IntPtr hWnd, int messageFilterMin, int messageFilterMax, int flags);
|
||||||
out Message msg,
|
|
||||||
IntPtr hWnd,
|
|
||||||
int messageFilterMin,
|
|
||||||
int messageFilterMax,
|
|
||||||
int flags
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Low-level WINAPI function that checks the next message in the queue.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="msg">The pending message (if any) is stored here.</param>
|
|
||||||
/// <param name="hWnd">Not used</param>
|
|
||||||
/// <param name="messageFilterMin">Not used</param>
|
|
||||||
/// <param name="messageFilterMax">Not used</param>
|
|
||||||
/// <param name="flags">Not used</param>
|
|
||||||
/// <returns>True if there is a message pending.</returns>
|
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity]
|
|
||||||
[DllImport("User32.dll", CharSet = CharSet.Auto)]
|
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
|
||||||
public static extern bool PeekMessage(
|
|
||||||
out System.Windows.Forms.Message msg,
|
|
||||||
IntPtr hWnd,
|
|
||||||
int messageFilterMin,
|
|
||||||
int messageFilterMax,
|
|
||||||
int flags
|
|
||||||
);
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -472,14 +262,10 @@ namespace OpenTK.Platform.Windows
|
||||||
/// To get extended error information, call GetLastError.
|
/// To get extended error information, call GetLastError.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity]
|
[System.Security.SuppressUnmanagedCodeSecurity]
|
||||||
[DllImport("User32.dll", CharSet = CharSet.Auto)]
|
[DllImport("User32.dll"), CLSCompliant(false)]
|
||||||
//[return: MarshalAs(UnmanagedType.Bool)]
|
//[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
public static extern INT GetMessage(
|
public static extern INT GetMessage(ref MSG msg,
|
||||||
out System.Windows.Forms.Message msg,
|
IntPtr windowHandle, int messageFilterMin, int messageFilterMax);
|
||||||
IntPtr windowHandle,
|
|
||||||
int messageFilterMin,
|
|
||||||
int messageFilterMax
|
|
||||||
);
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -491,17 +277,7 @@ namespace OpenTK.Platform.Windows
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
public static extern BOOL PostMessage(
|
public static extern BOOL PostMessage(
|
||||||
HWND hWnd,
|
HWND hWnd,
|
||||||
UINT Msg,
|
WindowMessage Msg,
|
||||||
WPARAM wParam,
|
|
||||||
LPARAM lParam
|
|
||||||
);
|
|
||||||
|
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity]
|
|
||||||
[DllImport("User32.dll", CharSet = CharSet.Auto)]
|
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
|
||||||
public static extern BOOL PostMessage(
|
|
||||||
HWND hWnd,
|
|
||||||
INT Msg,
|
|
||||||
WPARAM wParam,
|
WPARAM wParam,
|
||||||
LPARAM lParam
|
LPARAM lParam
|
||||||
);
|
);
|
||||||
|
@ -518,8 +294,8 @@ namespace OpenTK.Platform.Windows
|
||||||
#region DispatchMessage
|
#region DispatchMessage
|
||||||
|
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity]
|
[System.Security.SuppressUnmanagedCodeSecurity]
|
||||||
[DllImport("User32.dll", CharSet = CharSet.Auto)]
|
[DllImport("User32.dll"), CLSCompliant(false)]
|
||||||
public static extern LRESULT DispatchMessage(ref System.Windows.Forms.Message lpmsg);
|
public static extern LRESULT DispatchMessage(ref MSG msg);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -1195,26 +971,115 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region --- Structures ---
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
#region Message
|
#region --- Constants ---
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
public struct Constants
|
||||||
public struct Message
|
|
||||||
{
|
{
|
||||||
public IntPtr HWnd;
|
// Mouse indicator flags (found in winuser.h)
|
||||||
public int Msg;
|
public const int MOUSE_MOVE_RELATIVE = 0;
|
||||||
public IntPtr WParam;
|
public const int MOUSE_MOVE_ABSOLUTE = 1;
|
||||||
public IntPtr LParam;
|
public const int MOUSE_VIRTUAL_DESKTOP = 0x02; // the coordinates are mapped to the virtual desktop
|
||||||
public IntPtr Result;
|
public const int MOUSE_ATTRIBUTES_CHANGED = 0x04; // requery for mouse attributes
|
||||||
|
|
||||||
//public int Time;
|
// Found in winuser.h
|
||||||
//public System.Drawing.Point p;
|
public const int KEYBOARD_OVERRUN_MAKE_CODE = 0xFF;
|
||||||
//System.Drawing.
|
|
||||||
|
// WM_ACTIVATE state values (found in winuser.h)
|
||||||
|
public const int WA_INACTIVE = 0;
|
||||||
|
public const int WA_ACTIVE = 1;
|
||||||
|
public const int WA_CLICKACTIVE = 2;
|
||||||
|
|
||||||
|
// Window Messages (found in winuser.h)
|
||||||
|
public const int WM_NULL = 0x0000;
|
||||||
|
public const int WM_CREATE = 0x0001;
|
||||||
|
public const int WM_DESTROY = 0x0002;
|
||||||
|
public const int WM_MOVE = 0x0003;
|
||||||
|
public const int WM_SIZE = 0x0005;
|
||||||
|
public const int WM_ACTIVATE = 0x0006;
|
||||||
|
public const int WM_SETFOCUS = 0x0007;
|
||||||
|
public const int WM_KILLFOCUS = 0x0008;
|
||||||
|
public const int WM_ENABLE = 0x000A;
|
||||||
|
public const int WM_SETREDRAW = 0x000B;
|
||||||
|
public const int WM_SETTEXT = 0x000C;
|
||||||
|
public const int WM_GETTEXT = 0x000D;
|
||||||
|
public const int WM_GETTEXTLENGTH = 0x000E;
|
||||||
|
public const int WM_PAINT = 0x000F;
|
||||||
|
public const int WM_CLOSE = 0x0010;
|
||||||
|
// _WIN32_WCE
|
||||||
|
public const int WM_QUERYENDSESSION = 0x0011;
|
||||||
|
public const int WM_QUERYOPEN = 0x0013;
|
||||||
|
public const int WM_ENDSESSION = 0x0016;
|
||||||
|
public const int WM_QUIT = 0x0012;
|
||||||
|
public const int WM_ERASEBKGND = 0x0014;
|
||||||
|
public const int WM_SYSCOLORCHANGE = 0x0015;
|
||||||
|
public const int WM_SHOWWINDOW = 0x0018;
|
||||||
|
public const int WM_WININICHANGE = 0x001A;
|
||||||
|
// WINVER >= 0x400
|
||||||
|
public const int WM_SETTINGCHANGE = WM_WININICHANGE;
|
||||||
|
|
||||||
|
public const int WM_DEVMODECHANGE = 0x001B;
|
||||||
|
public const int WM_ACTIVATEAPP = 0x001C;
|
||||||
|
public const int WM_FONTCHANGE = 0x001D;
|
||||||
|
public const int WM_TIMECHANGE = 0x001E;
|
||||||
|
public const int WM_CANCELMODE = 0x001F;
|
||||||
|
public const int WM_SETCURSOR = 0x0020;
|
||||||
|
public const int WM_MOUSEACTIVATE = 0x0021;
|
||||||
|
public const int WM_CHILDACTIVATE = 0x0022;
|
||||||
|
public const int WM_QUEUESYNC = 0x0023;
|
||||||
|
|
||||||
|
public const int WM_GETMINMAXINFO = 0x0024;
|
||||||
|
|
||||||
|
public const int WM_WINDOWPOSCHANGING = 0x0046;
|
||||||
|
public const int WM_WINDOWPOSCHANGED = 0x0047;
|
||||||
|
|
||||||
|
// Keyboard events (found in winuser.h)
|
||||||
|
public const int WM_INPUT = 0x00FF; // Raw input. XP and higher only.
|
||||||
|
public const int WM_KEYDOWN = 0x0100;
|
||||||
|
public const int WM_KEYUP = 0x101;
|
||||||
|
public const int WM_SYSKEYDOWN = 0x0104;
|
||||||
|
public const int WM_SYSKEYUP = 0x0105;
|
||||||
|
public const int WM_COMMAND = 0x0111;
|
||||||
|
public const int WM_SYSCOMMAND = 0x0112;
|
||||||
|
public const int WM_ENTERIDLE = 0x121;
|
||||||
|
|
||||||
|
// Pixel types (found in wingdi.h)
|
||||||
|
public const byte PFD_TYPE_RGBA = 0;
|
||||||
|
public const byte PFD_TYPE_COLORINDEX = 1;
|
||||||
|
|
||||||
|
// Layer types (found in wingdi.h)
|
||||||
|
public const byte PFD_MAIN_PLANE = 0;
|
||||||
|
public const byte PFD_OVERLAY_PLANE = 1;
|
||||||
|
public const byte PFD_UNDERLAY_PLANE = unchecked((byte)-1);
|
||||||
|
|
||||||
|
// Device mode types (found in wingdi.h)
|
||||||
|
public const int DM_BITSPERPEL = 0x00040000;
|
||||||
|
public const int DM_PELSWIDTH = 0x00080000;
|
||||||
|
public const int DM_PELSHEIGHT = 0x00100000;
|
||||||
|
public const int DM_DISPLAYFLAGS = 0x00200000;
|
||||||
|
public const int DM_DISPLAYFREQUENCY = 0x00400000;
|
||||||
|
|
||||||
|
// ChangeDisplaySettings types (found in winuser.h)
|
||||||
|
public const int CDS_UPDATEREGISTRY = 0x00000001;
|
||||||
|
public const int CDS_TEST = 0x00000002;
|
||||||
|
public const int CDS_FULLSCREEN = 0x00000004;
|
||||||
|
|
||||||
|
// ChangeDisplaySettings results (found in winuser.h)
|
||||||
|
public const int DISP_CHANGE_SUCCESSFUL = 0;
|
||||||
|
public const int DISP_CHANGE_RESTART = 1;
|
||||||
|
public const int DISP_CHANGE_FAILED = -1;
|
||||||
|
|
||||||
|
// (found in winuser.h)
|
||||||
|
public const int ENUM_REGISTRY_SETTINGS = -2;
|
||||||
|
public const int ENUM_CURRENT_SETTINGS = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region --- Structures ---
|
||||||
|
|
||||||
#region CreateStruct
|
#region CreateStruct
|
||||||
|
|
||||||
public struct CreateStruct
|
public struct CreateStruct
|
||||||
|
@ -1307,9 +1172,6 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
#region PixelFormatDescriptor
|
#region PixelFormatDescriptor
|
||||||
|
|
||||||
internal static short PixelFormatDescriptorSize;
|
|
||||||
internal static short PixelFormatDescriptorVersion;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Describes a pixel format. It is used when interfacing with the WINAPI to create a new Context.
|
/// Describes a pixel format. It is used when interfacing with the WINAPI to create a new Context.
|
||||||
/// Found in WinGDI.h
|
/// Found in WinGDI.h
|
||||||
|
@ -1708,8 +1570,6 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
#region RawInputDevice
|
#region RawInputDevice
|
||||||
|
|
||||||
public static readonly int RawInputDeviceSize;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines information for the raw input devices.
|
/// Defines information for the raw input devices.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1751,8 +1611,6 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
#region RawInputDeviceList
|
#region RawInputDeviceList
|
||||||
|
|
||||||
public static readonly int RawInputDeviceListSize;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Contains information about a raw input device.
|
/// Contains information about a raw input device.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1778,8 +1636,6 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
#region RawInput
|
#region RawInput
|
||||||
|
|
||||||
public static int RawInputSize;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Contains the raw input from a device.
|
/// Contains the raw input from a device.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1811,8 +1667,6 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
#region RawInputHeader
|
#region RawInputHeader
|
||||||
|
|
||||||
public static readonly int RawInputHeaderSize;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Contains the header information that is part of the raw input data.
|
/// Contains the header information that is part of the raw input data.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1984,8 +1838,6 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
#region RawInputDeviceInfo
|
#region RawInputDeviceInfo
|
||||||
|
|
||||||
public static readonly int RawInputDeviceInfoSize;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines the raw input data coming from any device.
|
/// Defines the raw input data coming from any device.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -2192,6 +2044,92 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
#region --- Enums ---
|
#region --- Enums ---
|
||||||
|
|
||||||
|
public enum WindowStyle : int
|
||||||
|
{
|
||||||
|
Overlapped = 0x00000000,
|
||||||
|
Popup = unchecked((int)0x80000000),
|
||||||
|
Child = 0x40000000,
|
||||||
|
Minimize = 0x20000000,
|
||||||
|
Visible = 0x10000000,
|
||||||
|
Disabled = 0x08000000,
|
||||||
|
ClipSiblings = 0x04000000,
|
||||||
|
ClipChildren = 0x02000000,
|
||||||
|
Maximize = 0x01000000,
|
||||||
|
Caption = 0x00C00000, // Border | DialogFrame
|
||||||
|
Border = 0x00800000,
|
||||||
|
DialogFrame = 0x00400000,
|
||||||
|
VScroll = 0x00200000,
|
||||||
|
HScreen = 0x00100000,
|
||||||
|
SystemMenu = 0x00080000,
|
||||||
|
ThickFrame = 0x00040000,
|
||||||
|
Group = 0x00020000,
|
||||||
|
TabStop = 0x00010000,
|
||||||
|
|
||||||
|
MinimizeBox = 0x00020000,
|
||||||
|
MaximizeBox = 0x00010000,
|
||||||
|
|
||||||
|
Tiled = Overlapped,
|
||||||
|
Iconic = Minimize,
|
||||||
|
SizeBox = ThickFrame,
|
||||||
|
TiledWindow = OverlappedWindow,
|
||||||
|
|
||||||
|
// Common window styles:
|
||||||
|
OverlappedWindow = Overlapped | Caption | SystemMenu | ThickFrame | MinimizeBox | MaximizeBox,
|
||||||
|
PopupWindow = Popup | Border | SystemMenu,
|
||||||
|
ChildWindow = Child
|
||||||
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum ExtendedWindowStyle : int
|
||||||
|
{
|
||||||
|
DialogModalFrame = 0x00000001,
|
||||||
|
NoParentNotify = 0x00000004,
|
||||||
|
Topmost = 0x00000008,
|
||||||
|
AcceptFiles = 0x00000010,
|
||||||
|
Transparent = 0x00000020,
|
||||||
|
|
||||||
|
// #if(WINVER >= 0x0400)
|
||||||
|
MdiChild = 0x00000040,
|
||||||
|
ToolWindow = 0x00000080,
|
||||||
|
WindowEdge = 0x00000100,
|
||||||
|
ClientEdge = 0x00000200,
|
||||||
|
ContextHelp = 0x00000400,
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// #if(WINVER >= 0x0400)
|
||||||
|
Right = 0x00001000,
|
||||||
|
Left = 0x00000000,
|
||||||
|
RightToLeftReading = 0x00002000,
|
||||||
|
LeftToRightReading = 0x00000000,
|
||||||
|
LeftScrollbar = 0x00004000,
|
||||||
|
RightScrollbar = 0x00000000,
|
||||||
|
|
||||||
|
ControlParent = 0x00010000,
|
||||||
|
StaticEdge = 0x00020000,
|
||||||
|
ApplicationWindow = 0x00040000,
|
||||||
|
|
||||||
|
OverlappedWindow = WindowEdge | ClientEdge,
|
||||||
|
PaletteWindow = WindowEdge | ToolWindow | Topmost,
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// #if(_WIN32_WINNT >= 0x0500)
|
||||||
|
Layered = 0x00080000,
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// #if(WINVER >= 0x0500)
|
||||||
|
NoInheritLayout = 0x00100000, // Disable inheritence of mirroring by children
|
||||||
|
RightToLeftLayout = 0x00400000, // Right to left mirroring
|
||||||
|
// #endif /* WINVER >= 0x0500 */
|
||||||
|
|
||||||
|
// #if(_WIN32_WINNT >= 0x0501)
|
||||||
|
Composited = 0x02000000,
|
||||||
|
// #endif /* _WIN32_WINNT >= 0x0501 */
|
||||||
|
|
||||||
|
// #if(_WIN32_WINNT >= 0x0500)
|
||||||
|
NoActivate = 0x08000000
|
||||||
|
// #endif /* _WIN32_WINNT >= 0x0500 */
|
||||||
|
}
|
||||||
|
|
||||||
#region GetWindowLongOffsets enum
|
#region GetWindowLongOffsets enum
|
||||||
|
|
||||||
public enum GetWindowLongOffsets : int
|
public enum GetWindowLongOffsets : int
|
||||||
|
@ -2749,6 +2687,266 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region WindowMessage
|
||||||
|
|
||||||
|
public enum WindowMessage
|
||||||
|
{
|
||||||
|
NULL = 0x0000,
|
||||||
|
CREATE = 0x0001,
|
||||||
|
DESTROY = 0x0002,
|
||||||
|
MOVE = 0x0003,
|
||||||
|
SIZE = 0x0005,
|
||||||
|
ACTIVATE = 0x0006,
|
||||||
|
SETFOCUS = 0x0007,
|
||||||
|
KILLFOCUS = 0x0008,
|
||||||
|
// public const uint SETVISIBLE = 0x0009;
|
||||||
|
ENABLE = 0x000A,
|
||||||
|
SETREDRAW = 0x000B,
|
||||||
|
SETTEXT = 0x000C,
|
||||||
|
GETTEXT = 0x000D,
|
||||||
|
GETTEXTLENGTH = 0x000E,
|
||||||
|
PAINT = 0x000F,
|
||||||
|
CLOSE = 0x0010,
|
||||||
|
QUERYENDSESSION = 0x0011,
|
||||||
|
QUIT = 0x0012,
|
||||||
|
QUERYOPEN = 0x0013,
|
||||||
|
ERASEBKGND = 0x0014,
|
||||||
|
SYSCOLORCHANGE = 0x0015,
|
||||||
|
ENDSESSION = 0x0016,
|
||||||
|
// public const uint SYSTEMERROR = 0x0017;
|
||||||
|
SHOWWINDOW = 0x0018,
|
||||||
|
CTLCOLOR = 0x0019,
|
||||||
|
WININICHANGE = 0x001A,
|
||||||
|
SETTINGCHANGE = 0x001A,
|
||||||
|
DEVMODECHANGE = 0x001B,
|
||||||
|
ACTIVATEAPP = 0x001C,
|
||||||
|
FONTCHANGE = 0x001D,
|
||||||
|
TIMECHANGE = 0x001E,
|
||||||
|
CANCELMODE = 0x001F,
|
||||||
|
SETCURSOR = 0x0020,
|
||||||
|
MOUSEACTIVATE = 0x0021,
|
||||||
|
CHILDACTIVATE = 0x0022,
|
||||||
|
QUEUESYNC = 0x0023,
|
||||||
|
GETMINMAXINFO = 0x0024,
|
||||||
|
PAINTICON = 0x0026,
|
||||||
|
ICONERASEBKGND = 0x0027,
|
||||||
|
NEXTDLGCTL = 0x0028,
|
||||||
|
// public const uint ALTTABACTIVE = 0x0029;
|
||||||
|
SPOOLERSTATUS = 0x002A,
|
||||||
|
DRAWITEM = 0x002B,
|
||||||
|
MEASUREITEM = 0x002C,
|
||||||
|
DELETEITEM = 0x002D,
|
||||||
|
VKEYTOITEM = 0x002E,
|
||||||
|
CHARTOITEM = 0x002F,
|
||||||
|
SETFONT = 0x0030,
|
||||||
|
GETFONT = 0x0031,
|
||||||
|
SETHOTKEY = 0x0032,
|
||||||
|
GETHOTKEY = 0x0033,
|
||||||
|
// public const uint FILESYSCHANGE = 0x0034;
|
||||||
|
// public const uint ISACTIVEICON = 0x0035;
|
||||||
|
// public const uint QUERYPARKICON = 0x0036;
|
||||||
|
QUERYDRAGICON = 0x0037,
|
||||||
|
COMPAREITEM = 0x0039,
|
||||||
|
// public const uint TESTING = 0x003a;
|
||||||
|
// public const uint OTHERWINDOWCREATED = 0x003c;
|
||||||
|
GETOBJECT = 0x003D,
|
||||||
|
// public const uint ACTIVATESHELLWINDOW = 0x003e;
|
||||||
|
COMPACTING = 0x0041,
|
||||||
|
COMMNOTIFY = 0x0044,
|
||||||
|
WINDOWPOSCHANGING = 0x0046,
|
||||||
|
WINDOWPOSCHANGED = 0x0047,
|
||||||
|
POWER = 0x0048,
|
||||||
|
COPYDATA = 0x004A,
|
||||||
|
CANCELJOURNAL = 0x004B,
|
||||||
|
NOTIFY = 0x004E,
|
||||||
|
INPUTLANGCHANGEREQUEST = 0x0050,
|
||||||
|
INPUTLANGCHANGE = 0x0051,
|
||||||
|
TCARD = 0x0052,
|
||||||
|
HELP = 0x0053,
|
||||||
|
USERCHANGED = 0x0054,
|
||||||
|
NOTIFYFORMAT = 0x0055,
|
||||||
|
CONTEXTMENU = 0x007B,
|
||||||
|
STYLECHANGING = 0x007C,
|
||||||
|
STYLECHANGED = 0x007D,
|
||||||
|
DISPLAYCHANGE = 0x007E,
|
||||||
|
GETICON = 0x007F,
|
||||||
|
|
||||||
|
// Non-Client messages
|
||||||
|
SETICON = 0x0080,
|
||||||
|
NCCREATE = 0x0081,
|
||||||
|
NCDESTROY = 0x0082,
|
||||||
|
NCCALCSIZE = 0x0083,
|
||||||
|
NCHITTEST = 0x0084,
|
||||||
|
NCPAINT = 0x0085,
|
||||||
|
NCACTIVATE = 0x0086,
|
||||||
|
GETDLGCODE = 0x0087,
|
||||||
|
SYNCPAINT = 0x0088,
|
||||||
|
// public const uint SYNCTASK = 0x0089;
|
||||||
|
NCMOUSEMOVE = 0x00A0,
|
||||||
|
NCLBUTTONDOWN = 0x00A1,
|
||||||
|
NCLBUTTONUP = 0x00A2,
|
||||||
|
NCLBUTTONDBLCLK = 0x00A3,
|
||||||
|
NCRBUTTONDOWN = 0x00A4,
|
||||||
|
NCRBUTTONUP = 0x00A5,
|
||||||
|
NCRBUTTONDBLCLK = 0x00A6,
|
||||||
|
NCMBUTTONDOWN = 0x00A7,
|
||||||
|
NCMBUTTONUP = 0x00A8,
|
||||||
|
NCMBUTTONDBLCLK = 0x00A9,
|
||||||
|
// public const uint NCXBUTTONDOWN = 0x00ab;
|
||||||
|
// public const uint NCXBUTTONUP = 0x00ac;
|
||||||
|
// public const uint NCXBUTTONDBLCLK = 0x00ad;
|
||||||
|
|
||||||
|
INPUT = 0x00FF,
|
||||||
|
|
||||||
|
KEYDOWN = 0x0100,
|
||||||
|
KEYFIRST = 0x0100,
|
||||||
|
KEYUP = 0x0101,
|
||||||
|
CHAR = 0x0102,
|
||||||
|
DEADCHAR = 0x0103,
|
||||||
|
SYSKEYDOWN = 0x0104,
|
||||||
|
SYSKEYUP = 0x0105,
|
||||||
|
SYSCHAR = 0x0106,
|
||||||
|
SYSDEADCHAR = 0x0107,
|
||||||
|
KEYLAST = 0x0108,
|
||||||
|
IME_STARTCOMPOSITION = 0x010D,
|
||||||
|
IME_ENDCOMPOSITION = 0x010E,
|
||||||
|
IME_COMPOSITION = 0x010F,
|
||||||
|
IME_KEYLAST = 0x010F,
|
||||||
|
INITDIALOG = 0x0110,
|
||||||
|
COMMAND = 0x0111,
|
||||||
|
SYSCOMMAND = 0x0112,
|
||||||
|
TIMER = 0x0113,
|
||||||
|
HSCROLL = 0x0114,
|
||||||
|
VSCROLL = 0x0115,
|
||||||
|
INITMENU = 0x0116,
|
||||||
|
INITMENUPOPUP = 0x0117,
|
||||||
|
// public const uint SYSTIMER = 0x0118;
|
||||||
|
MENUSELECT = 0x011F,
|
||||||
|
MENUCHAR = 0x0120,
|
||||||
|
ENTERIDLE = 0x0121,
|
||||||
|
MENURBUTTONUP = 0x0122,
|
||||||
|
MENUDRAG = 0x0123,
|
||||||
|
MENUGETOBJECT = 0x0124,
|
||||||
|
UNINITMENUPOPUP = 0x0125,
|
||||||
|
MENUCOMMAND = 0x0126,
|
||||||
|
|
||||||
|
CHANGEUISTATE = 0x0127,
|
||||||
|
UPDATEUISTATE = 0x0128,
|
||||||
|
QUERYUISTATE = 0x0129,
|
||||||
|
|
||||||
|
// public const uint LBTRACKPOINT = 0x0131;
|
||||||
|
CTLCOLORMSGBOX = 0x0132,
|
||||||
|
CTLCOLOREDIT = 0x0133,
|
||||||
|
CTLCOLORLISTBOX = 0x0134,
|
||||||
|
CTLCOLORBTN = 0x0135,
|
||||||
|
CTLCOLORDLG = 0x0136,
|
||||||
|
CTLCOLORSCROLLBAR = 0x0137,
|
||||||
|
CTLCOLORSTATIC = 0x0138,
|
||||||
|
MOUSEMOVE = 0x0200,
|
||||||
|
MOUSEFIRST = 0x0200,
|
||||||
|
LBUTTONDOWN = 0x0201,
|
||||||
|
LBUTTONUP = 0x0202,
|
||||||
|
LBUTTONDBLCLK = 0x0203,
|
||||||
|
RBUTTONDOWN = 0x0204,
|
||||||
|
RBUTTONUP = 0x0205,
|
||||||
|
RBUTTONDBLCLK = 0x0206,
|
||||||
|
MBUTTONDOWN = 0x0207,
|
||||||
|
MBUTTONUP = 0x0208,
|
||||||
|
MBUTTONDBLCLK = 0x0209,
|
||||||
|
MOUSEWHEEL = 0x020A,
|
||||||
|
MOUSELAST = 0x020D,
|
||||||
|
// public const uint XBUTTONDOWN = 0x020B;
|
||||||
|
// public const uint XBUTTONUP = 0x020C;
|
||||||
|
// public const uint XBUTTONDBLCLK = 0x020D;
|
||||||
|
PARENTNOTIFY = 0x0210,
|
||||||
|
ENTERMENULOOP = 0x0211,
|
||||||
|
EXITMENULOOP = 0x0212,
|
||||||
|
NEXTMENU = 0x0213,
|
||||||
|
SIZING = 0x0214,
|
||||||
|
CAPTURECHANGED = 0x0215,
|
||||||
|
MOVING = 0x0216,
|
||||||
|
// public const uint POWERBROADCAST = 0x0218;
|
||||||
|
DEVICECHANGE = 0x0219,
|
||||||
|
MDICREATE = 0x0220,
|
||||||
|
MDIDESTROY = 0x0221,
|
||||||
|
MDIACTIVATE = 0x0222,
|
||||||
|
MDIRESTORE = 0x0223,
|
||||||
|
MDINEXT = 0x0224,
|
||||||
|
MDIMAXIMIZE = 0x0225,
|
||||||
|
MDITILE = 0x0226,
|
||||||
|
MDICASCADE = 0x0227,
|
||||||
|
MDIICONARRANGE = 0x0228,
|
||||||
|
MDIGETACTIVE = 0x0229,
|
||||||
|
/* D&D messages */
|
||||||
|
// public const uint DROPOBJECT = 0x022A;
|
||||||
|
// public const uint QUERYDROPOBJECT = 0x022B;
|
||||||
|
// public const uint BEGINDRAG = 0x022C;
|
||||||
|
// public const uint DRAGLOOP = 0x022D;
|
||||||
|
// public const uint DRAGSELECT = 0x022E;
|
||||||
|
// public const uint DRAGMOVE = 0x022F;
|
||||||
|
MDISETMENU = 0x0230,
|
||||||
|
ENTERSIZEMOVE = 0x0231,
|
||||||
|
EXITSIZEMOVE = 0x0232,
|
||||||
|
DROPFILES = 0x0233,
|
||||||
|
MDIREFRESHMENU = 0x0234,
|
||||||
|
IME_SETCONTEXT = 0x0281,
|
||||||
|
IME_NOTIFY = 0x0282,
|
||||||
|
IME_CONTROL = 0x0283,
|
||||||
|
IME_COMPOSITIONFULL = 0x0284,
|
||||||
|
IME_SELECT = 0x0285,
|
||||||
|
IME_CHAR = 0x0286,
|
||||||
|
IME_REQUEST = 0x0288,
|
||||||
|
IME_KEYDOWN = 0x0290,
|
||||||
|
IME_KEYUP = 0x0291,
|
||||||
|
NCMOUSEHOVER = 0x02A0,
|
||||||
|
MOUSEHOVER = 0x02A1,
|
||||||
|
NCMOUSELEAVE = 0x02A2,
|
||||||
|
MOUSELEAVE = 0x02A3,
|
||||||
|
CUT = 0x0300,
|
||||||
|
COPY = 0x0301,
|
||||||
|
PASTE = 0x0302,
|
||||||
|
CLEAR = 0x0303,
|
||||||
|
UNDO = 0x0304,
|
||||||
|
RENDERFORMAT = 0x0305,
|
||||||
|
RENDERALLFORMATS = 0x0306,
|
||||||
|
DESTROYCLIPBOARD = 0x0307,
|
||||||
|
DRAWCLIPBOARD = 0x0308,
|
||||||
|
PAINTCLIPBOARD = 0x0309,
|
||||||
|
VSCROLLCLIPBOARD = 0x030A,
|
||||||
|
SIZECLIPBOARD = 0x030B,
|
||||||
|
ASKCBFORMATNAME = 0x030C,
|
||||||
|
CHANGECBCHAIN = 0x030D,
|
||||||
|
HSCROLLCLIPBOARD = 0x030E,
|
||||||
|
QUERYNEWPALETTE = 0x030F,
|
||||||
|
PALETTEISCHANGING = 0x0310,
|
||||||
|
PALETTECHANGED = 0x0311,
|
||||||
|
HOTKEY = 0x0312,
|
||||||
|
PRINT = 0x0317,
|
||||||
|
PRINTCLIENT = 0x0318,
|
||||||
|
HANDHELDFIRST = 0x0358,
|
||||||
|
HANDHELDLAST = 0x035F,
|
||||||
|
AFXFIRST = 0x0360,
|
||||||
|
AFXLAST = 0x037F,
|
||||||
|
PENWINFIRST = 0x0380,
|
||||||
|
PENWINLAST = 0x038F,
|
||||||
|
APP = 0x8000,
|
||||||
|
USER = 0x0400,
|
||||||
|
|
||||||
|
// Our "private" ones
|
||||||
|
MOUSE_ENTER = 0x0401,
|
||||||
|
ASYNC_MESSAGE = 0x0403,
|
||||||
|
REFLECT = USER + 0x1c00,
|
||||||
|
CLOSE_INTERNAL = USER + 0x1c01,
|
||||||
|
|
||||||
|
// NotifyIcon (Systray) Balloon messages
|
||||||
|
BALLOONSHOW = USER + 0x0002,
|
||||||
|
BALLOONHIDE = USER + 0x0003,
|
||||||
|
BALLOONTIMEOUT = USER + 0x0004,
|
||||||
|
BALLOONUSERCLICK = USER + 0x0005
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region --- Callbacks ---
|
#region --- Callbacks ---
|
||||||
|
@ -2768,6 +2966,53 @@ namespace OpenTK.Platform.Windows
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#region Message
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential), CLSCompliant(false)]
|
||||||
|
public struct MSG
|
||||||
|
{
|
||||||
|
public IntPtr HWnd;
|
||||||
|
public WindowMessage Message;
|
||||||
|
public IntPtr WParam;
|
||||||
|
public IntPtr LParam;
|
||||||
|
public uint Time;
|
||||||
|
public POINT Point;
|
||||||
|
public object RefObject;
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return String.Format("msg=0x{0:x} ({1}) hwnd=0x{2:x} wparam=0x{3:x} lparam=0x{4:x} pt=0x{5:x}", (int)Message, Message.ToString(), HWnd.ToInt32(), WParam.ToInt32(), LParam.ToInt32(), Point);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Point
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct POINT
|
||||||
|
{
|
||||||
|
public int X;
|
||||||
|
public int Y;
|
||||||
|
|
||||||
|
public POINT(int x, int y)
|
||||||
|
{
|
||||||
|
this.X = x;
|
||||||
|
this.Y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Drawing.Point ToPoint()
|
||||||
|
{
|
||||||
|
return new System.Drawing.Point(X, Y);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return "Point {" + X.ToString() + ", " + Y.ToString() + ")";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,32 +45,32 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
unsafe int ChoosePixelFormat(IntPtr hDc, API.PixelFormatDescriptor* pPfd)
|
unsafe int ChoosePixelFormat(IntPtr hDc, PixelFormatDescriptor* pPfd)
|
||||||
{
|
{
|
||||||
unsafe { return Delegates.wglChoosePixelFormat((IntPtr)hDc, (API.PixelFormatDescriptor*)pPfd); }
|
unsafe { return Delegates.wglChoosePixelFormat((IntPtr)hDc, (PixelFormatDescriptor*)pPfd); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
int ChoosePixelFormat(IntPtr hDc, API.PixelFormatDescriptor[] pPfd)
|
int ChoosePixelFormat(IntPtr hDc, PixelFormatDescriptor[] pPfd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.PixelFormatDescriptor* pPfd_ptr = pPfd)
|
fixed (PixelFormatDescriptor* pPfd_ptr = pPfd)
|
||||||
{
|
{
|
||||||
int retval = Delegates.wglChoosePixelFormat((IntPtr)hDc, (API.PixelFormatDescriptor*)pPfd_ptr);
|
int retval = Delegates.wglChoosePixelFormat((IntPtr)hDc, (PixelFormatDescriptor*)pPfd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
int ChoosePixelFormat(IntPtr hDc, ref API.PixelFormatDescriptor pPfd)
|
int ChoosePixelFormat(IntPtr hDc, ref PixelFormatDescriptor pPfd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.PixelFormatDescriptor* pPfd_ptr = &pPfd)
|
fixed (PixelFormatDescriptor* pPfd_ptr = &pPfd)
|
||||||
{
|
{
|
||||||
int retval = Delegates.wglChoosePixelFormat((IntPtr)hDc, (API.PixelFormatDescriptor*)pPfd_ptr);
|
int retval = Delegates.wglChoosePixelFormat((IntPtr)hDc, (PixelFormatDescriptor*)pPfd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,44 +78,44 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
unsafe int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, API.PixelFormatDescriptor* ppfd)
|
unsafe int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, PixelFormatDescriptor* ppfd)
|
||||||
{
|
{
|
||||||
unsafe { return Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (API.PixelFormatDescriptor*)ppfd); }
|
unsafe { return Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (PixelFormatDescriptor*)ppfd); }
|
||||||
}
|
}
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
unsafe int DescribePixelFormat(IntPtr hdc, int ipfd, Int32 cjpfd, API.PixelFormatDescriptor* ppfd)
|
unsafe int DescribePixelFormat(IntPtr hdc, int ipfd, Int32 cjpfd, PixelFormatDescriptor* ppfd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (API.PixelFormatDescriptor*)ppfd);
|
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (PixelFormatDescriptor*)ppfd);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, API.PixelFormatDescriptor[] ppfd)
|
int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, PixelFormatDescriptor[] ppfd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.PixelFormatDescriptor* ppfd_ptr = ppfd)
|
fixed (PixelFormatDescriptor* ppfd_ptr = ppfd)
|
||||||
{
|
{
|
||||||
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (API.PixelFormatDescriptor*)ppfd_ptr);
|
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (PixelFormatDescriptor*)ppfd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
int DescribePixelFormat(IntPtr hdc, int ipfd, Int32 cjpfd, API.PixelFormatDescriptor[] ppfd)
|
int DescribePixelFormat(IntPtr hdc, int ipfd, Int32 cjpfd, PixelFormatDescriptor[] ppfd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.PixelFormatDescriptor* ppfd_ptr = ppfd)
|
fixed (PixelFormatDescriptor* ppfd_ptr = ppfd)
|
||||||
{
|
{
|
||||||
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (API.PixelFormatDescriptor*)ppfd_ptr);
|
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (PixelFormatDescriptor*)ppfd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,26 +123,26 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, ref API.PixelFormatDescriptor ppfd)
|
int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, ref PixelFormatDescriptor ppfd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.PixelFormatDescriptor* ppfd_ptr = &ppfd)
|
fixed (PixelFormatDescriptor* ppfd_ptr = &ppfd)
|
||||||
{
|
{
|
||||||
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (API.PixelFormatDescriptor*)ppfd_ptr);
|
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (PixelFormatDescriptor*)ppfd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
int DescribePixelFormat(IntPtr hdc, int ipfd, Int32 cjpfd, ref API.PixelFormatDescriptor ppfd)
|
int DescribePixelFormat(IntPtr hdc, int ipfd, Int32 cjpfd, ref PixelFormatDescriptor ppfd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.PixelFormatDescriptor* ppfd_ptr = &ppfd)
|
fixed (PixelFormatDescriptor* ppfd_ptr = &ppfd)
|
||||||
{
|
{
|
||||||
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (API.PixelFormatDescriptor*)ppfd_ptr);
|
int retval = Delegates.wglDescribePixelFormat((IntPtr)hdc, (int)ipfd, (UInt32)cjpfd, (PixelFormatDescriptor*)ppfd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -174,32 +174,32 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
unsafe Boolean SetPixelFormat(IntPtr hdc, int ipfd, API.PixelFormatDescriptor* ppfd)
|
unsafe Boolean SetPixelFormat(IntPtr hdc, int ipfd, PixelFormatDescriptor* ppfd)
|
||||||
{
|
{
|
||||||
unsafe { return Delegates.wglSetPixelFormat((IntPtr)hdc, (int)ipfd, (API.PixelFormatDescriptor*)ppfd); }
|
unsafe { return Delegates.wglSetPixelFormat((IntPtr)hdc, (int)ipfd, (PixelFormatDescriptor*)ppfd); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
Boolean SetPixelFormat(IntPtr hdc, int ipfd, API.PixelFormatDescriptor[] ppfd)
|
Boolean SetPixelFormat(IntPtr hdc, int ipfd, PixelFormatDescriptor[] ppfd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.PixelFormatDescriptor* ppfd_ptr = ppfd)
|
fixed (PixelFormatDescriptor* ppfd_ptr = ppfd)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglSetPixelFormat((IntPtr)hdc, (int)ipfd, (API.PixelFormatDescriptor*)ppfd_ptr);
|
Boolean retval = Delegates.wglSetPixelFormat((IntPtr)hdc, (int)ipfd, (PixelFormatDescriptor*)ppfd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
Boolean SetPixelFormat(IntPtr hdc, int ipfd, ref API.PixelFormatDescriptor ppfd)
|
Boolean SetPixelFormat(IntPtr hdc, int ipfd, ref PixelFormatDescriptor ppfd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.PixelFormatDescriptor* ppfd_ptr = &ppfd)
|
fixed (PixelFormatDescriptor* ppfd_ptr = &ppfd)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglSetPixelFormat((IntPtr)hdc, (int)ipfd, (API.PixelFormatDescriptor*)ppfd_ptr);
|
Boolean retval = Delegates.wglSetPixelFormat((IntPtr)hdc, (int)ipfd, (PixelFormatDescriptor*)ppfd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -225,44 +225,44 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
unsafe Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, API.LayerPlaneDescriptor* plpd)
|
unsafe Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, LayerPlaneDescriptor* plpd)
|
||||||
{
|
{
|
||||||
unsafe { return Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (API.LayerPlaneDescriptor*)plpd); }
|
unsafe { return Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (LayerPlaneDescriptor*)plpd); }
|
||||||
}
|
}
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
unsafe Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, Int32 nBytes, API.LayerPlaneDescriptor* plpd)
|
unsafe Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, Int32 nBytes, LayerPlaneDescriptor* plpd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (API.LayerPlaneDescriptor*)plpd);
|
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (LayerPlaneDescriptor*)plpd);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, API.LayerPlaneDescriptor[] plpd)
|
Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, LayerPlaneDescriptor[] plpd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.LayerPlaneDescriptor* plpd_ptr = plpd)
|
fixed (LayerPlaneDescriptor* plpd_ptr = plpd)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (API.LayerPlaneDescriptor*)plpd_ptr);
|
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (LayerPlaneDescriptor*)plpd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, Int32 nBytes, API.LayerPlaneDescriptor[] plpd)
|
Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, Int32 nBytes, LayerPlaneDescriptor[] plpd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.LayerPlaneDescriptor* plpd_ptr = plpd)
|
fixed (LayerPlaneDescriptor* plpd_ptr = plpd)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (API.LayerPlaneDescriptor*)plpd_ptr);
|
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (LayerPlaneDescriptor*)plpd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -270,26 +270,26 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, ref API.LayerPlaneDescriptor plpd)
|
Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, ref LayerPlaneDescriptor plpd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.LayerPlaneDescriptor* plpd_ptr = &plpd)
|
fixed (LayerPlaneDescriptor* plpd_ptr = &plpd)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (API.LayerPlaneDescriptor*)plpd_ptr);
|
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (LayerPlaneDescriptor*)plpd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, Int32 nBytes, ref API.LayerPlaneDescriptor plpd)
|
Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, Int32 nBytes, ref LayerPlaneDescriptor plpd)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.LayerPlaneDescriptor* plpd_ptr = &plpd)
|
fixed (LayerPlaneDescriptor* plpd_ptr = &plpd)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (API.LayerPlaneDescriptor*)plpd_ptr);
|
Boolean retval = Delegates.wglDescribeLayerPlane((IntPtr)hDc, (int)pixelFormat, (int)layerPlane, (UInt32)nBytes, (LayerPlaneDescriptor*)plpd_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -394,32 +394,32 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
unsafe Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, API.GlyphMetricsFloat* glyphMetrics)
|
unsafe Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, GlyphMetricsFloat* glyphMetrics)
|
||||||
{
|
{
|
||||||
unsafe { return Delegates.wglUseFontOutlinesA((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (API.GlyphMetricsFloat*)glyphMetrics); }
|
unsafe { return Delegates.wglUseFontOutlinesA((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (GlyphMetricsFloat*)glyphMetrics); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, API.GlyphMetricsFloat[] glyphMetrics)
|
Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, GlyphMetricsFloat[] glyphMetrics)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.GlyphMetricsFloat* glyphMetrics_ptr = glyphMetrics)
|
fixed (GlyphMetricsFloat* glyphMetrics_ptr = glyphMetrics)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglUseFontOutlinesA((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (API.GlyphMetricsFloat*)glyphMetrics_ptr);
|
Boolean retval = Delegates.wglUseFontOutlinesA((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (GlyphMetricsFloat*)glyphMetrics_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, ref API.GlyphMetricsFloat glyphMetrics)
|
Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, ref GlyphMetricsFloat glyphMetrics)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.GlyphMetricsFloat* glyphMetrics_ptr = &glyphMetrics)
|
fixed (GlyphMetricsFloat* glyphMetrics_ptr = &glyphMetrics)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglUseFontOutlinesA((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (API.GlyphMetricsFloat*)glyphMetrics_ptr);
|
Boolean retval = Delegates.wglUseFontOutlinesA((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (GlyphMetricsFloat*)glyphMetrics_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -427,32 +427,32 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
[System.CLSCompliant(false)]
|
[System.CLSCompliant(false)]
|
||||||
public static
|
public static
|
||||||
unsafe Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, API.GlyphMetricsFloat* glyphMetrics)
|
unsafe Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, GlyphMetricsFloat* glyphMetrics)
|
||||||
{
|
{
|
||||||
unsafe { return Delegates.wglUseFontOutlinesW((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (API.GlyphMetricsFloat*)glyphMetrics); }
|
unsafe { return Delegates.wglUseFontOutlinesW((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (GlyphMetricsFloat*)glyphMetrics); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, API.GlyphMetricsFloat[] glyphMetrics)
|
Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, GlyphMetricsFloat[] glyphMetrics)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.GlyphMetricsFloat* glyphMetrics_ptr = glyphMetrics)
|
fixed (GlyphMetricsFloat* glyphMetrics_ptr = glyphMetrics)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglUseFontOutlinesW((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (API.GlyphMetricsFloat*)glyphMetrics_ptr);
|
Boolean retval = Delegates.wglUseFontOutlinesW((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (GlyphMetricsFloat*)glyphMetrics_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static
|
public static
|
||||||
Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, ref API.GlyphMetricsFloat glyphMetrics)
|
Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, ref GlyphMetricsFloat glyphMetrics)
|
||||||
{
|
{
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (API.GlyphMetricsFloat* glyphMetrics_ptr = &glyphMetrics)
|
fixed (GlyphMetricsFloat* glyphMetrics_ptr = &glyphMetrics)
|
||||||
{
|
{
|
||||||
Boolean retval = Delegates.wglUseFontOutlinesW((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (API.GlyphMetricsFloat*)glyphMetrics_ptr);
|
Boolean retval = Delegates.wglUseFontOutlinesW((IntPtr)hDC, (Int32)first, (Int32)count, (Int32)listBase, (float)thickness, (float)deviation, (Int32)fontMode, (GlyphMetricsFloat*)glyphMetrics_ptr);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,10 @@ namespace OpenTK.Platform.Windows
|
||||||
internal extern static Boolean CopyContext(IntPtr hglrcSrc, IntPtr hglrcDst, UInt32 mask);
|
internal extern static Boolean CopyContext(IntPtr hglrcSrc, IntPtr hglrcDst, UInt32 mask);
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglChoosePixelFormat", ExactSpelling = true)]
|
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglChoosePixelFormat", ExactSpelling = true)]
|
||||||
internal extern static unsafe int ChoosePixelFormat(IntPtr hDc, API.PixelFormatDescriptor* pPfd);
|
internal extern static unsafe int ChoosePixelFormat(IntPtr hDc, PixelFormatDescriptor* pPfd);
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglDescribePixelFormat", ExactSpelling = true)]
|
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglDescribePixelFormat", ExactSpelling = true)]
|
||||||
internal extern static unsafe int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, API.PixelFormatDescriptor* ppfd);
|
internal extern static unsafe int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, PixelFormatDescriptor* ppfd);
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglGetCurrentDC", ExactSpelling = true)]
|
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglGetCurrentDC", ExactSpelling = true)]
|
||||||
internal extern static IntPtr GetCurrentDC();
|
internal extern static IntPtr GetCurrentDC();
|
||||||
|
@ -45,7 +45,7 @@ namespace OpenTK.Platform.Windows
|
||||||
internal extern static int GetPixelFormat(IntPtr hdc);
|
internal extern static int GetPixelFormat(IntPtr hdc);
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglSetPixelFormat", ExactSpelling = true)]
|
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglSetPixelFormat", ExactSpelling = true)]
|
||||||
internal extern static unsafe Boolean SetPixelFormat(IntPtr hdc, int ipfd, API.PixelFormatDescriptor* ppfd);
|
internal extern static unsafe Boolean SetPixelFormat(IntPtr hdc, int ipfd, PixelFormatDescriptor* ppfd);
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglSwapBuffers", ExactSpelling = true)]
|
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglSwapBuffers", ExactSpelling = true)]
|
||||||
internal extern static Boolean SwapBuffers(IntPtr hdc);
|
internal extern static Boolean SwapBuffers(IntPtr hdc);
|
||||||
|
@ -57,7 +57,7 @@ namespace OpenTK.Platform.Windows
|
||||||
internal extern static IntPtr CreateLayerContext(IntPtr hDc, int level);
|
internal extern static IntPtr CreateLayerContext(IntPtr hDc, int level);
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglDescribeLayerPlane", ExactSpelling = true)]
|
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglDescribeLayerPlane", ExactSpelling = true)]
|
||||||
internal extern static unsafe Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, API.LayerPlaneDescriptor* plpd);
|
internal extern static unsafe Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, LayerPlaneDescriptor* plpd);
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglSetLayerPaletteEntries", ExactSpelling = true)]
|
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglSetLayerPaletteEntries", ExactSpelling = true)]
|
||||||
internal extern static unsafe int SetLayerPaletteEntries(IntPtr hdc, int iLayerPlane, int iStart, int cEntries, Int32* pcr);
|
internal extern static unsafe int SetLayerPaletteEntries(IntPtr hdc, int iLayerPlane, int iStart, int cEntries, Int32* pcr);
|
||||||
|
@ -78,10 +78,10 @@ namespace OpenTK.Platform.Windows
|
||||||
internal extern static Boolean UseFontBitmapsW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase);
|
internal extern static Boolean UseFontBitmapsW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase);
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglUseFontOutlinesA", CharSet = CharSet.Auto)]
|
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglUseFontOutlinesA", CharSet = CharSet.Auto)]
|
||||||
internal extern static unsafe Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, API.GlyphMetricsFloat* glyphMetrics);
|
internal extern static unsafe Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, GlyphMetricsFloat* glyphMetrics);
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglUseFontOutlinesW", CharSet = CharSet.Auto)]
|
[System.Runtime.InteropServices.DllImport(Wgl.Library, EntryPoint = "wglUseFontOutlinesW", CharSet = CharSet.Auto)]
|
||||||
internal extern static unsafe Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, API.GlyphMetricsFloat* glyphMetrics);
|
internal extern static unsafe Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, GlyphMetricsFloat* glyphMetrics);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,10 +28,10 @@ namespace OpenTK.Platform.Windows
|
||||||
internal delegate Boolean CopyContext(IntPtr hglrcSrc, IntPtr hglrcDst, UInt32 mask);
|
internal delegate Boolean CopyContext(IntPtr hglrcSrc, IntPtr hglrcDst, UInt32 mask);
|
||||||
internal static CopyContext wglCopyContext = null;
|
internal static CopyContext wglCopyContext = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal unsafe delegate int ChoosePixelFormat(IntPtr hDc, API.PixelFormatDescriptor* pPfd);
|
internal unsafe delegate int ChoosePixelFormat(IntPtr hDc, PixelFormatDescriptor* pPfd);
|
||||||
internal unsafe static ChoosePixelFormat wglChoosePixelFormat = null;
|
internal unsafe static ChoosePixelFormat wglChoosePixelFormat = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal unsafe delegate int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, API.PixelFormatDescriptor* ppfd);
|
internal unsafe delegate int DescribePixelFormat(IntPtr hdc, int ipfd, UInt32 cjpfd, PixelFormatDescriptor* ppfd);
|
||||||
internal unsafe static DescribePixelFormat wglDescribePixelFormat = null;
|
internal unsafe static DescribePixelFormat wglDescribePixelFormat = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal delegate IntPtr GetCurrentDC();
|
internal delegate IntPtr GetCurrentDC();
|
||||||
|
@ -46,7 +46,7 @@ namespace OpenTK.Platform.Windows
|
||||||
internal delegate int GetPixelFormat(IntPtr hdc);
|
internal delegate int GetPixelFormat(IntPtr hdc);
|
||||||
internal static GetPixelFormat wglGetPixelFormat = null;
|
internal static GetPixelFormat wglGetPixelFormat = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal unsafe delegate Boolean SetPixelFormat(IntPtr hdc, int ipfd, API.PixelFormatDescriptor* ppfd);
|
internal unsafe delegate Boolean SetPixelFormat(IntPtr hdc, int ipfd, PixelFormatDescriptor* ppfd);
|
||||||
internal unsafe static SetPixelFormat wglSetPixelFormat = null;
|
internal unsafe static SetPixelFormat wglSetPixelFormat = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal delegate Boolean SwapBuffers(IntPtr hdc);
|
internal delegate Boolean SwapBuffers(IntPtr hdc);
|
||||||
|
@ -58,7 +58,7 @@ namespace OpenTK.Platform.Windows
|
||||||
internal delegate IntPtr CreateLayerContext(IntPtr hDc, int level);
|
internal delegate IntPtr CreateLayerContext(IntPtr hDc, int level);
|
||||||
internal static CreateLayerContext wglCreateLayerContext = null;
|
internal static CreateLayerContext wglCreateLayerContext = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal unsafe delegate Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, API.LayerPlaneDescriptor* plpd);
|
internal unsafe delegate Boolean DescribeLayerPlane(IntPtr hDc, int pixelFormat, int layerPlane, UInt32 nBytes, LayerPlaneDescriptor* plpd);
|
||||||
internal unsafe static DescribeLayerPlane wglDescribeLayerPlane = null;
|
internal unsafe static DescribeLayerPlane wglDescribeLayerPlane = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal unsafe delegate int SetLayerPaletteEntries(IntPtr hdc, int iLayerPlane, int iStart, int cEntries, Int32* pcr);
|
internal unsafe delegate int SetLayerPaletteEntries(IntPtr hdc, int iLayerPlane, int iStart, int cEntries, Int32* pcr);
|
||||||
|
@ -79,10 +79,10 @@ namespace OpenTK.Platform.Windows
|
||||||
internal delegate Boolean UseFontBitmapsW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase);
|
internal delegate Boolean UseFontBitmapsW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase);
|
||||||
internal static UseFontBitmapsW wglUseFontBitmapsW = null;
|
internal static UseFontBitmapsW wglUseFontBitmapsW = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal unsafe delegate Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, API.GlyphMetricsFloat* glyphMetrics);
|
internal unsafe delegate Boolean UseFontOutlinesA(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, GlyphMetricsFloat* glyphMetrics);
|
||||||
internal unsafe static UseFontOutlinesA wglUseFontOutlinesA = null;
|
internal unsafe static UseFontOutlinesA wglUseFontOutlinesA = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal unsafe delegate Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, API.GlyphMetricsFloat* glyphMetrics);
|
internal unsafe delegate Boolean UseFontOutlinesW(IntPtr hDC, Int32 first, Int32 count, Int32 listBase, float thickness, float deviation, Int32 fontMode, GlyphMetricsFloat* glyphMetrics);
|
||||||
internal unsafe static UseFontOutlinesW wglUseFontOutlinesW = null;
|
internal unsafe static UseFontOutlinesW wglUseFontOutlinesW = null;
|
||||||
[System.Security.SuppressUnmanagedCodeSecurity()]
|
[System.Security.SuppressUnmanagedCodeSecurity()]
|
||||||
internal delegate IntPtr CreateBufferRegionARB(IntPtr hDC, int iLayerPlane, UInt32 uType);
|
internal delegate IntPtr CreateBufferRegionARB(IntPtr hDC, int iLayerPlane, UInt32 uType);
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace OpenTK.Platform.Windows
|
||||||
#region --- Contructors ---
|
#region --- Contructors ---
|
||||||
|
|
||||||
public WinGLContext()
|
public WinGLContext()
|
||||||
: this(new DisplayMode(640, 480, new ColorDepth(32), 16, 0, 0, 2, false, false, false, 0.0f))
|
: this(new DisplayMode(640, 480, new ColorMode(32), 16, 0, 0, 2, false, false, false, 0.0f))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,20 +72,20 @@ namespace OpenTK.Platform.Windows
|
||||||
Debug.WriteLine(String.Format("Device context: {0}", deviceContext));
|
Debug.WriteLine(String.Format("Device context: {0}", deviceContext));
|
||||||
|
|
||||||
Debug.Write("Setting pixel format... ");
|
Debug.Write("Setting pixel format... ");
|
||||||
API.PixelFormatDescriptor pixelFormat = new API.PixelFormatDescriptor();
|
PixelFormatDescriptor pixelFormat = new PixelFormatDescriptor();
|
||||||
pixelFormat.Size = API.PixelFormatDescriptorSize;
|
pixelFormat.Size = API.PixelFormatDescriptorSize;
|
||||||
pixelFormat.Version = API.PixelFormatDescriptorVersion;
|
pixelFormat.Version = API.PixelFormatDescriptorVersion;
|
||||||
pixelFormat.Flags =
|
pixelFormat.Flags =
|
||||||
API.PixelFormatDescriptorFlags.SUPPORT_OPENGL |
|
PixelFormatDescriptorFlags.SUPPORT_OPENGL |
|
||||||
API.PixelFormatDescriptorFlags.DRAW_TO_WINDOW;
|
PixelFormatDescriptorFlags.DRAW_TO_WINDOW;
|
||||||
pixelFormat.ColorBits = (byte)(mode.Color.Red + mode.Color.Green + mode.Color.Blue);
|
pixelFormat.ColorBits = (byte)(mode.Color.Red + mode.Color.Green + mode.Color.Blue);
|
||||||
if (mode.Color.IsIndexed)
|
if (mode.Color.IsIndexed)
|
||||||
{
|
{
|
||||||
pixelFormat.PixelType = API.PixelType.INDEXED;
|
pixelFormat.PixelType = PixelType.INDEXED;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pixelFormat.PixelType = API.PixelType.RGBA;
|
pixelFormat.PixelType = PixelType.RGBA;
|
||||||
pixelFormat.RedBits = (byte)mode.Color.Red;
|
pixelFormat.RedBits = (byte)mode.Color.Red;
|
||||||
pixelFormat.GreenBits = (byte)mode.Color.Green;
|
pixelFormat.GreenBits = (byte)mode.Color.Green;
|
||||||
pixelFormat.BlueBits = (byte)mode.Color.Blue;
|
pixelFormat.BlueBits = (byte)mode.Color.Blue;
|
||||||
|
@ -107,17 +107,17 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
if (mode.DepthBits <= 0)
|
if (mode.DepthBits <= 0)
|
||||||
{
|
{
|
||||||
pixelFormat.Flags |= API.PixelFormatDescriptorFlags.DEPTH_DONTCARE;
|
pixelFormat.Flags |= PixelFormatDescriptorFlags.DEPTH_DONTCARE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode.Stereo)
|
if (mode.Stereo)
|
||||||
{
|
{
|
||||||
pixelFormat.Flags |= API.PixelFormatDescriptorFlags.STEREO;
|
pixelFormat.Flags |= PixelFormatDescriptorFlags.STEREO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode.Buffers > 1)
|
if (mode.Buffers > 1)
|
||||||
{
|
{
|
||||||
pixelFormat.Flags |= API.PixelFormatDescriptorFlags.DOUBLEBUFFER;
|
pixelFormat.Flags |= PixelFormatDescriptorFlags.DOUBLEBUFFER;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: More elaborate mode setting, using DescribePixelFormat.
|
// TODO: More elaborate mode setting, using DescribePixelFormat.
|
||||||
|
@ -209,8 +209,8 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
while (!done)
|
while (!done)
|
||||||
{
|
{
|
||||||
API.DeviceMode currentMode = new API.DeviceMode();
|
DeviceMode currentMode = new DeviceMode();
|
||||||
IntPtr handle = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(API.DeviceMode)));
|
IntPtr handle = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(DeviceMode)));
|
||||||
Marshal.StructureToPtr(currentMode, handle, true);
|
Marshal.StructureToPtr(currentMode, handle, true);
|
||||||
|
|
||||||
done = (API.EnumDisplaySettings(null, index++, handle) != 0) ? false : true;
|
done = (API.EnumDisplaySettings(null, index++, handle) != 0) ? false : true;
|
||||||
|
@ -231,7 +231,7 @@ namespace OpenTK.Platform.Windows
|
||||||
DisplayMode mode = new DisplayMode(
|
DisplayMode mode = new DisplayMode(
|
||||||
currentMode.PelsWidth,
|
currentMode.PelsWidth,
|
||||||
currentMode.PelsHeight,
|
currentMode.PelsHeight,
|
||||||
new ColorDepth(currentMode.BitsPerPel),
|
new ColorMode(currentMode.BitsPerPel),
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -256,7 +256,7 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Debug.Print("Manually disposing WinGLContext {0}.", this.renderContext);
|
//Debug.Print("Manually disposing WinGLContext {0}.", this.renderContext);
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
GC.SuppressFinalize(this);
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
@ -265,7 +265,8 @@ namespace OpenTK.Platform.Windows
|
||||||
{
|
{
|
||||||
if (!disposed)
|
if (!disposed)
|
||||||
{
|
{
|
||||||
// Clean unmanaged resources here:
|
// Clean unmanaged resources here
|
||||||
|
// The following call uses the Debug and Wgl classes, making it unsafe?
|
||||||
ReleaseResources();
|
ReleaseResources();
|
||||||
|
|
||||||
if (calledManually)
|
if (calledManually)
|
||||||
|
@ -290,9 +291,8 @@ namespace OpenTK.Platform.Windows
|
||||||
Wgl.Imports.MakeCurrent(IntPtr.Zero, IntPtr.Zero);
|
Wgl.Imports.MakeCurrent(IntPtr.Zero, IntPtr.Zero);
|
||||||
if (!Wgl.Imports.DeleteContext(renderContext))
|
if (!Wgl.Imports.DeleteContext(renderContext))
|
||||||
{
|
{
|
||||||
throw new ApplicationException(
|
//throw new ApplicationException("Could not destroy the OpenGL render context. Error: " + Marshal.GetLastWin32Error());
|
||||||
"Could not destroy the OpenGL render context. Error: " + Marshal.GetLastWin32Error()
|
//Debug.Print("Could not destroy the OpenGL render context. Error: {0}", Marshal.GetLastWin32Error());
|
||||||
);
|
|
||||||
}
|
}
|
||||||
renderContext = IntPtr.Zero;
|
renderContext = IntPtr.Zero;
|
||||||
}
|
}
|
||||||
|
@ -301,8 +301,8 @@ namespace OpenTK.Platform.Windows
|
||||||
{
|
{
|
||||||
if (!API.ReleaseDC(windowHandle, deviceContext))
|
if (!API.ReleaseDC(windowHandle, deviceContext))
|
||||||
{
|
{
|
||||||
throw new ApplicationException(
|
//throw new ApplicationException("Could not release device context. Error: " + Marshal.GetLastWin32Error());
|
||||||
"Could not release device context. Error: " + Marshal.GetLastWin32Error());
|
//Debug.Print("Could not destroy the device context. Error: {0}", Marshal.GetLastWin32Error());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,9 +310,8 @@ namespace OpenTK.Platform.Windows
|
||||||
{
|
{
|
||||||
if (!API.FreeLibrary(opengl32Handle))
|
if (!API.FreeLibrary(opengl32Handle))
|
||||||
{
|
{
|
||||||
throw new ApplicationException(
|
//throw new ApplicationException("FreeLibray call failed ('opengl32.dll'), Error: " + Marshal.GetLastWin32Error());
|
||||||
"FreeLibray call failed ('opengl32.dll'), Error: " + Marshal.GetLastWin32Error()
|
//Debug.Print("Could not release {0}. Error: {1}", opengl32Name, Marshal.GetLastWin32Error());
|
||||||
);
|
|
||||||
}
|
}
|
||||||
opengl32Handle = IntPtr.Zero;
|
opengl32Handle = IntPtr.Zero;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ using System.Diagnostics;
|
||||||
|
|
||||||
namespace OpenTK.Platform.Windows
|
namespace OpenTK.Platform.Windows
|
||||||
{
|
{
|
||||||
sealed class WinGLControl : OpenTK.Platform.IGLControl
|
sealed class WinGLControl : IGLControl, IDisposable
|
||||||
{
|
{
|
||||||
private WinGLContext glContext;
|
private WinGLContext glContext;
|
||||||
private bool fullscreen;
|
private bool fullscreen;
|
||||||
|
@ -25,7 +25,7 @@ namespace OpenTK.Platform.Windows
|
||||||
private DisplayMode mode;
|
private DisplayMode mode;
|
||||||
|
|
||||||
private bool disposed;
|
private bool disposed;
|
||||||
private Message msg; // Used only by the IsIdle event.
|
private MSG msg; // Used only by the IsIdle event.
|
||||||
|
|
||||||
#region --- Constructors ---
|
#region --- Constructors ---
|
||||||
|
|
||||||
|
@ -39,6 +39,8 @@ namespace OpenTK.Platform.Windows
|
||||||
glContext = new WinGLContext(mode);
|
glContext = new WinGLContext(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
void c_HandleCreated(object sender, EventArgs e)
|
void c_HandleCreated(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Debug.Print("GLControl handle created, creating WinGLContext.");
|
Debug.Print("GLControl handle created, creating WinGLContext.");
|
||||||
|
@ -66,9 +68,7 @@ namespace OpenTK.Platform.Windows
|
||||||
glContext.Dispose();
|
glContext.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#region --- IGLControl members ---
|
||||||
|
|
||||||
#region --- IGLControl membmers ---
|
|
||||||
|
|
||||||
#region public bool IsIdle
|
#region public bool IsIdle
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ namespace OpenTK.Platform.Windows
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return !API.PeekMessage(out msg, IntPtr.Zero, 0, 0, 0);
|
return !API.PeekMessage(ref msg, IntPtr.Zero, 0, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ namespace OpenTK.Platform.Windows
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
this.Dispose(true);
|
this.Dispose(true);
|
||||||
GC.SuppressFinalize(this);
|
//GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Dispose(bool calledManually)
|
private void Dispose(bool calledManually)
|
||||||
|
@ -132,12 +132,12 @@ namespace OpenTK.Platform.Windows
|
||||||
disposed = true;
|
disposed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
~WinGLControl()
|
~WinGLControl()
|
||||||
{
|
{
|
||||||
Dispose(false);
|
Dispose(false);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace OpenTK.Platform.Windows
|
||||||
/// Drives GameWindow on Windows.
|
/// Drives GameWindow on Windows.
|
||||||
/// This class supports OpenTK, and is not intended for use by OpenTK programs.
|
/// This class supports OpenTK, and is not intended for use by OpenTK programs.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
sealed class WinGLNative : NativeWindow, INativeGLWindow, IDisposable
|
sealed class WinGLNative : NativeWindow, INativeGLWindow
|
||||||
{
|
{
|
||||||
#region --- Fields ---
|
#region --- Fields ---
|
||||||
|
|
||||||
|
@ -35,6 +35,11 @@ namespace OpenTK.Platform.Windows
|
||||||
private WindowInfo window;
|
private WindowInfo window;
|
||||||
private int top, bottom, left, right;
|
private int top, bottom, left, right;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// For use in PeekMessage. System.Windows.Forms.Message causes deadlock there.
|
||||||
|
/// </summary>
|
||||||
|
private MSG myGoodMsg = new MSG();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// For use in WndProc only.
|
/// For use in WndProc only.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -65,12 +70,12 @@ namespace OpenTK.Platform.Windows
|
||||||
/// <param name="m">Reference to the incoming Windows Message.</param>
|
/// <param name="m">Reference to the incoming Windows Message.</param>
|
||||||
protected override void WndProc(ref Message m)
|
protected override void WndProc(ref Message m)
|
||||||
{
|
{
|
||||||
switch (m.Msg)
|
switch ((WindowMessage)m.Msg)
|
||||||
{
|
{
|
||||||
case API.Constants.WM_WINDOWPOSCHANGED:
|
case WindowMessage.WINDOWPOSCHANGED:
|
||||||
// Get window size
|
// Get window size
|
||||||
width = Marshal.ReadInt32(m.LParam, (int)Marshal.OffsetOf(typeof(API.WindowPosition), "cx"));
|
width = Marshal.ReadInt32(m.LParam, (int)Marshal.OffsetOf(typeof(WindowPosition), "cx"));
|
||||||
height = Marshal.ReadInt32(m.LParam, (int)Marshal.OffsetOf(typeof(API.WindowPosition), "cy"));
|
height = Marshal.ReadInt32(m.LParam, (int)Marshal.OffsetOf(typeof(WindowPosition), "cy"));
|
||||||
width -= (left_border + right_border);
|
width -= (left_border + right_border);
|
||||||
height -= (top_border + bottom_border);
|
height -= (top_border + bottom_border);
|
||||||
//if (resizeEventArgs.Width != width || resizeEventArgs.Height != height)
|
//if (resizeEventArgs.Width != width || resizeEventArgs.Height != height)
|
||||||
|
@ -86,10 +91,10 @@ namespace OpenTK.Platform.Windows
|
||||||
// If the message was not a resize notification, send it to the default WndProc.
|
// If the message was not a resize notification, send it to the default WndProc.
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case API.Constants.WM_CREATE:
|
case WindowMessage.CREATE:
|
||||||
// Set the window width and height:
|
// Set the window width and height:
|
||||||
this.mode.Width = Marshal.ReadInt32(m.LParam, (int)Marshal.OffsetOf(typeof(API.CreateStruct), "cx"));
|
this.mode.Width = Marshal.ReadInt32(m.LParam, (int)Marshal.OffsetOf(typeof(CreateStruct), "cx"));
|
||||||
this.mode.Height = Marshal.ReadInt32(m.LParam, (int)Marshal.OffsetOf(typeof(API.CreateStruct), "cy"));
|
this.mode.Height = Marshal.ReadInt32(m.LParam, (int)Marshal.OffsetOf(typeof(CreateStruct), "cy"));
|
||||||
this.mode.Width -= (left_border + right_border);
|
this.mode.Width -= (left_border + right_border);
|
||||||
this.mode.Height -= (top_border + bottom_border);
|
this.mode.Height -= (top_border + bottom_border);
|
||||||
|
|
||||||
|
@ -97,21 +102,23 @@ namespace OpenTK.Platform.Windows
|
||||||
this.OnCreate(EventArgs.Empty);
|
this.OnCreate(EventArgs.Empty);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case API.Constants.WM_CLOSE:
|
case WindowMessage.CLOSE:
|
||||||
this.DestroyWindow();
|
this.DestroyWindow();
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case API.Constants.WM_DESTROY:
|
case WindowMessage.DESTROY:
|
||||||
this.OnDestroy(EventArgs.Empty);
|
this.OnDestroy(EventArgs.Empty);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case API.Constants.WM_QUIT:
|
case WindowMessage.QUIT:
|
||||||
isExiting = true;
|
isExiting = true;
|
||||||
|
//this.Dispose();
|
||||||
//Debug.WriteLine("Application quit.");
|
//Debug.WriteLine("Application quit.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DefWndProc(ref m);
|
//DefWndProc(ref m);
|
||||||
|
base.WndProc(ref m);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -121,12 +128,12 @@ namespace OpenTK.Platform.Windows
|
||||||
#region public void ProcessEvents()
|
#region public void ProcessEvents()
|
||||||
|
|
||||||
private int ret;
|
private int ret;
|
||||||
System.Windows.Forms.Message msg;
|
MSG msg;
|
||||||
public void ProcessEvents()
|
public void ProcessEvents()
|
||||||
{
|
{
|
||||||
while (!IsIdle)
|
while (!IsIdle)
|
||||||
{
|
{
|
||||||
ret = API.GetMessage(out msg, Handle, 0, 0);
|
ret = API.GetMessage(ref msg, Handle, 0, 0);
|
||||||
if (ret == -1)
|
if (ret == -1)
|
||||||
{
|
{
|
||||||
throw new ApplicationException(String.Format(
|
throw new ApplicationException(String.Format(
|
||||||
|
@ -195,7 +202,7 @@ namespace OpenTK.Platform.Windows
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
//return !API.PeekMessage(out msg, IntPtr.Zero, 0, 0, 0);
|
//return !API.PeekMessage(out msg, IntPtr.Zero, 0, 0, 0);
|
||||||
return !API.PeekMessage(out msg, this.Handle, 0, 0, 0);
|
return !API.PeekMessage(ref myGoodMsg, this.Handle, 0, 0, 0);
|
||||||
//return API.GetQueueStatus(API.QueueStatusFlags.ALLEVENTS) == 0;
|
//return API.GetQueueStatus(API.QueueStatusFlags.ALLEVENTS) == 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -220,21 +227,21 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
CreateParams cp = new CreateParams();
|
CreateParams cp = new CreateParams();
|
||||||
cp.ClassStyle =
|
cp.ClassStyle =
|
||||||
(int)API.WindowClassStyle.OwnDC |
|
(int)WindowClassStyle.OwnDC |
|
||||||
(int)API.WindowClassStyle.VRedraw |
|
(int)WindowClassStyle.VRedraw |
|
||||||
(int)API.WindowClassStyle.HRedraw |
|
(int)WindowClassStyle.HRedraw |
|
||||||
(int)API.WindowClassStyle.Ime;
|
(int)WindowClassStyle.Ime;
|
||||||
cp.Style =
|
cp.Style =
|
||||||
(int)API.WindowStyle.Visible |
|
(int)WindowStyle.Visible |
|
||||||
(int)API.WindowStyle.ClipChildren |
|
(int)WindowStyle.ClipChildren |
|
||||||
(int)API.WindowStyle.ClipSiblings |
|
(int)WindowStyle.ClipSiblings |
|
||||||
(int)API.WindowStyle.OverlappedWindow;
|
(int)WindowStyle.OverlappedWindow;
|
||||||
|
|
||||||
API.Rectangle rect = new API.Rectangle();
|
Rectangle rect = new Rectangle();
|
||||||
rect.top = rect.left = 0;
|
rect.top = rect.left = 0;
|
||||||
rect.bottom = windowMode.Height;
|
rect.bottom = windowMode.Height;
|
||||||
rect.right = windowMode.Width;
|
rect.right = windowMode.Width;
|
||||||
API.AdjustWindowRect(ref rect, API.WindowStyle.OverlappedWindow, false);
|
API.AdjustWindowRect(ref rect, WindowStyle.OverlappedWindow, false);
|
||||||
|
|
||||||
// Not used
|
// Not used
|
||||||
Top = 0;
|
Top = 0;
|
||||||
|
@ -315,7 +322,7 @@ namespace OpenTK.Platform.Windows
|
||||||
public void DestroyWindow()
|
public void DestroyWindow()
|
||||||
{
|
{
|
||||||
Debug.Print("Destroying window: {0}", window.ToString());
|
Debug.Print("Destroying window: {0}", window.ToString());
|
||||||
API.PostMessage(this.Handle, API.Constants.WM_DESTROY, IntPtr.Zero, IntPtr.Zero);
|
API.PostMessage(this.Handle, WindowMessage.DESTROY, IntPtr.Zero, IntPtr.Zero);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -428,7 +435,7 @@ namespace OpenTK.Platform.Windows
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
this.Dispose(true);
|
this.Dispose(true);
|
||||||
GC.SuppressFinalize(this);
|
//GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Dispose(bool calledManually)
|
private void Dispose(bool calledManually)
|
||||||
|
@ -441,17 +448,17 @@ namespace OpenTK.Platform.Windows
|
||||||
{
|
{
|
||||||
// Safe to clean managed resources
|
// Safe to clean managed resources
|
||||||
glContext.Dispose();
|
glContext.Dispose();
|
||||||
base.DestroyHandle();
|
//base.DestroyHandle();
|
||||||
}
|
}
|
||||||
disposed = true;
|
disposed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
~WinGLNative()
|
~WinGLNative()
|
||||||
{
|
{
|
||||||
Dispose(false);
|
Dispose(false);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace OpenTK.Platform.Windows
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Input event data.
|
/// Input event data.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private API.RawInput data = new API.RawInput();
|
private RawInput data = new RawInput();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The total number of input devices connected to this system.
|
/// The total number of input devices connected to this system.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -70,12 +70,12 @@ namespace OpenTK.Platform.Windows
|
||||||
/// <param name="msg">The WM_INPUT message, containing the data on the input event.</param>
|
/// <param name="msg">The WM_INPUT message, containing the data on the input event.</param>
|
||||||
protected override void WndProc(ref Message msg)
|
protected override void WndProc(ref Message msg)
|
||||||
{
|
{
|
||||||
switch (msg.Msg)
|
switch ((WindowMessage)msg.Msg)
|
||||||
{
|
{
|
||||||
case API.Constants.WM_INPUT:
|
case WindowMessage.INPUT:
|
||||||
size = 0;
|
size = 0;
|
||||||
// Get the size of the input data
|
// Get the size of the input data
|
||||||
API.GetRawInputData(msg.LParam, API.GetRawInputDataEnum.INPUT,
|
API.GetRawInputData(msg.LParam, GetRawInputDataEnum.INPUT,
|
||||||
IntPtr.Zero, ref size, API.RawInputHeaderSize);
|
IntPtr.Zero, ref size, API.RawInputHeaderSize);
|
||||||
|
|
||||||
//if (data == null || API.RawInputSize < size)
|
//if (data == null || API.RawInputSize < size)
|
||||||
|
@ -83,21 +83,21 @@ namespace OpenTK.Platform.Windows
|
||||||
// throw new ApplicationException("Critical error when processing raw windows input.");
|
// throw new ApplicationException("Critical error when processing raw windows input.");
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if (size == API.GetRawInputData(msg.LParam, API.GetRawInputDataEnum.INPUT,
|
if (size == API.GetRawInputData(msg.LParam, GetRawInputDataEnum.INPUT,
|
||||||
data, ref size, API.RawInputHeaderSize))
|
data, ref size, API.RawInputHeaderSize))
|
||||||
{
|
{
|
||||||
switch (data.Header.Type)
|
switch (data.Header.Type)
|
||||||
{
|
{
|
||||||
case API.RawInputDeviceType.KEYBOARD:
|
case RawInputDeviceType.KEYBOARD:
|
||||||
if (!keyboardDriver.ProcessKeyboardEvent(data))
|
if (!keyboardDriver.ProcessKeyboardEvent(data))
|
||||||
API.DefRawInputProc(ref data, 1, (uint)API.RawInputHeaderSize);
|
API.DefRawInputProc(ref data, 1, (uint)API.RawInputHeaderSize);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case API.RawInputDeviceType.MOUSE:
|
case RawInputDeviceType.MOUSE:
|
||||||
API.DefRawInputProc(ref data, 1, (uint)API.RawInputHeaderSize);
|
API.DefRawInputProc(ref data, 1, (uint)API.RawInputHeaderSize);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case API.RawInputDeviceType.HID:
|
case RawInputDeviceType.HID:
|
||||||
API.DefRawInputProc(ref data, 1, (uint)API.RawInputHeaderSize);
|
API.DefRawInputProc(ref data, 1, (uint)API.RawInputHeaderSize);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -110,13 +110,13 @@ namespace OpenTK.Platform.Windows
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case API.Constants.WM_CLOSE:
|
case WindowMessage.CLOSE:
|
||||||
case API.Constants.WM_DESTROY:
|
case WindowMessage.DESTROY:
|
||||||
Debug.Print("Input window detached from parent {0}.", Handle);
|
Debug.Print("Input window detached from parent {0}.", Handle);
|
||||||
ReleaseHandle();
|
ReleaseHandle();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case API.Constants.WM_QUIT:
|
case WindowMessage.QUIT:
|
||||||
Debug.WriteLine("Input window quit.");
|
Debug.WriteLine("Input window quit.");
|
||||||
this.Dispose();
|
this.Dispose();
|
||||||
break;
|
break;
|
||||||
|
@ -168,6 +168,7 @@ namespace OpenTK.Platform.Windows
|
||||||
if (manual)
|
if (manual)
|
||||||
{
|
{
|
||||||
keyboardDriver.Dispose();
|
keyboardDriver.Dispose();
|
||||||
|
this.ReleaseHandle();
|
||||||
}
|
}
|
||||||
|
|
||||||
disposed = true;
|
disposed = true;
|
||||||
|
|
|
@ -23,10 +23,10 @@ namespace OpenTK.Platform.Windows
|
||||||
private List<Keyboard> keyboards = new List<Keyboard>();
|
private List<Keyboard> keyboards = new List<Keyboard>();
|
||||||
private IntPtr windowHandle;
|
private IntPtr windowHandle;
|
||||||
|
|
||||||
#region internal static Dictionary<API.VirtualKeys, Input.Key> KeyMap
|
#region internal static Dictionary<VirtualKeys, Input.Key> KeyMap
|
||||||
|
|
||||||
internal static Dictionary<API.VirtualKeys, Input.Key> KeyMap =
|
internal static Dictionary<VirtualKeys, Input.Key> KeyMap =
|
||||||
new Dictionary<API.VirtualKeys, Input.Key>((int)API.VirtualKeys.Last);
|
new Dictionary<VirtualKeys, Input.Key>((int)VirtualKeys.Last);
|
||||||
|
|
||||||
private static bool keyMapExists;
|
private static bool keyMapExists;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -38,81 +38,81 @@ namespace OpenTK.Platform.Windows
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
KeyMap.Add(API.VirtualKeys.ESCAPE, Input.Key.Escape);
|
KeyMap.Add(VirtualKeys.ESCAPE, Input.Key.Escape);
|
||||||
|
|
||||||
// Function keys
|
// Function keys
|
||||||
for (int i = 0; i < 24; i++)
|
for (int i = 0; i < 24; i++)
|
||||||
{
|
{
|
||||||
KeyMap.Add((API.VirtualKeys)((int)API.VirtualKeys.F1 + i), Input.Key.F1 + i);
|
KeyMap.Add((VirtualKeys)((int)VirtualKeys.F1 + i), Input.Key.F1 + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Number keys (0-9)
|
// Number keys (0-9)
|
||||||
for (int i = 0; i <= 9; i++)
|
for (int i = 0; i <= 9; i++)
|
||||||
{
|
{
|
||||||
KeyMap.Add((API.VirtualKeys)(0x30 + i), Input.Key.Number0 + i);
|
KeyMap.Add((VirtualKeys)(0x30 + i), Input.Key.Number0 + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Letters (A-Z)
|
// Letters (A-Z)
|
||||||
for (int i = 0; i < 26; i++)
|
for (int i = 0; i < 26; i++)
|
||||||
{
|
{
|
||||||
KeyMap.Add((API.VirtualKeys)(0x41 + i), Input.Key.A + i);
|
KeyMap.Add((VirtualKeys)(0x41 + i), Input.Key.A + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyMap.Add(API.VirtualKeys.TAB, Input.Key.Tab);
|
KeyMap.Add(VirtualKeys.TAB, Input.Key.Tab);
|
||||||
KeyMap.Add(API.VirtualKeys.CAPITAL, Input.Key.CapsLock);
|
KeyMap.Add(VirtualKeys.CAPITAL, Input.Key.CapsLock);
|
||||||
KeyMap.Add(API.VirtualKeys.LCONTROL, Input.Key.ControlLeft);
|
KeyMap.Add(VirtualKeys.LCONTROL, Input.Key.ControlLeft);
|
||||||
KeyMap.Add(API.VirtualKeys.LSHIFT, Input.Key.ShiftLeft);
|
KeyMap.Add(VirtualKeys.LSHIFT, Input.Key.ShiftLeft);
|
||||||
KeyMap.Add(API.VirtualKeys.LWIN, Input.Key.WinLeft);
|
KeyMap.Add(VirtualKeys.LWIN, Input.Key.WinLeft);
|
||||||
KeyMap.Add(API.VirtualKeys.LMENU, Input.Key.AltLeft);
|
KeyMap.Add(VirtualKeys.LMENU, Input.Key.AltLeft);
|
||||||
KeyMap.Add(API.VirtualKeys.SPACE, Input.Key.Space);
|
KeyMap.Add(VirtualKeys.SPACE, Input.Key.Space);
|
||||||
KeyMap.Add(API.VirtualKeys.RMENU, Input.Key.AltRight);
|
KeyMap.Add(VirtualKeys.RMENU, Input.Key.AltRight);
|
||||||
KeyMap.Add(API.VirtualKeys.RWIN, Input.Key.WinRight);
|
KeyMap.Add(VirtualKeys.RWIN, Input.Key.WinRight);
|
||||||
KeyMap.Add(API.VirtualKeys.APPS, Input.Key.Menu);
|
KeyMap.Add(VirtualKeys.APPS, Input.Key.Menu);
|
||||||
KeyMap.Add(API.VirtualKeys.RCONTROL, Input.Key.ControlRight);
|
KeyMap.Add(VirtualKeys.RCONTROL, Input.Key.ControlRight);
|
||||||
KeyMap.Add(API.VirtualKeys.RSHIFT, Input.Key.ShiftRight);
|
KeyMap.Add(VirtualKeys.RSHIFT, Input.Key.ShiftRight);
|
||||||
KeyMap.Add(API.VirtualKeys.RETURN, Input.Key.Enter);
|
KeyMap.Add(VirtualKeys.RETURN, Input.Key.Enter);
|
||||||
KeyMap.Add(API.VirtualKeys.BACK, Input.Key.BackSpace);
|
KeyMap.Add(VirtualKeys.BACK, Input.Key.BackSpace);
|
||||||
|
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_1, Input.Key.Semicolon); // Varies by keyboard, ;: on Win2K/US
|
KeyMap.Add(VirtualKeys.OEM_1, Input.Key.Semicolon); // Varies by keyboard, ;: on Win2K/US
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_2, Input.Key.Slash); // Varies by keyboard, /? on Win2K/US
|
KeyMap.Add(VirtualKeys.OEM_2, Input.Key.Slash); // Varies by keyboard, /? on Win2K/US
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_3, Input.Key.Tilde); // Varies by keyboard, `~ on Win2K/US
|
KeyMap.Add(VirtualKeys.OEM_3, Input.Key.Tilde); // Varies by keyboard, `~ on Win2K/US
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_4, Input.Key.BracketLeft); // Varies by keyboard, [{ on Win2K/US
|
KeyMap.Add(VirtualKeys.OEM_4, Input.Key.BracketLeft); // Varies by keyboard, [{ on Win2K/US
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_5, Input.Key.BackSlash); // Varies by keyboard, \| on Win2K/US
|
KeyMap.Add(VirtualKeys.OEM_5, Input.Key.BackSlash); // Varies by keyboard, \| on Win2K/US
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_6, Input.Key.BracketRight); // Varies by keyboard, ]} on Win2K/US
|
KeyMap.Add(VirtualKeys.OEM_6, Input.Key.BracketRight); // Varies by keyboard, ]} on Win2K/US
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_7, Input.Key.Quote); // Varies by keyboard, '" on Win2K/US
|
KeyMap.Add(VirtualKeys.OEM_7, Input.Key.Quote); // Varies by keyboard, '" on Win2K/US
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_PLUS, Input.Key.Plus); // Invariant: +
|
KeyMap.Add(VirtualKeys.OEM_PLUS, Input.Key.Plus); // Invariant: +
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_COMMA, Input.Key.Comma); // Invariant: ,
|
KeyMap.Add(VirtualKeys.OEM_COMMA, Input.Key.Comma); // Invariant: ,
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_MINUS, Input.Key.Minus); // Invariant: -
|
KeyMap.Add(VirtualKeys.OEM_MINUS, Input.Key.Minus); // Invariant: -
|
||||||
KeyMap.Add(API.VirtualKeys.OEM_PERIOD, Input.Key.Period); // Invariant: .
|
KeyMap.Add(VirtualKeys.OEM_PERIOD, Input.Key.Period); // Invariant: .
|
||||||
|
|
||||||
KeyMap.Add(API.VirtualKeys.HOME, Input.Key.Home);
|
KeyMap.Add(VirtualKeys.HOME, Input.Key.Home);
|
||||||
KeyMap.Add(API.VirtualKeys.END, Input.Key.End);
|
KeyMap.Add(VirtualKeys.END, Input.Key.End);
|
||||||
KeyMap.Add(API.VirtualKeys.DELETE, Input.Key.Delete);
|
KeyMap.Add(VirtualKeys.DELETE, Input.Key.Delete);
|
||||||
KeyMap.Add(API.VirtualKeys.PRIOR, Input.Key.PageUp);
|
KeyMap.Add(VirtualKeys.PRIOR, Input.Key.PageUp);
|
||||||
KeyMap.Add(API.VirtualKeys.NEXT, Input.Key.PageDown);
|
KeyMap.Add(VirtualKeys.NEXT, Input.Key.PageDown);
|
||||||
KeyMap.Add(API.VirtualKeys.PRINT, Input.Key.PrintScreen);
|
KeyMap.Add(VirtualKeys.PRINT, Input.Key.PrintScreen);
|
||||||
KeyMap.Add(API.VirtualKeys.PAUSE, Input.Key.Pause);
|
KeyMap.Add(VirtualKeys.PAUSE, Input.Key.Pause);
|
||||||
KeyMap.Add(API.VirtualKeys.NUMLOCK, Input.Key.NumLock);
|
KeyMap.Add(VirtualKeys.NUMLOCK, Input.Key.NumLock);
|
||||||
|
|
||||||
KeyMap.Add(API.VirtualKeys.SLEEP, Input.Key.Sleep);
|
KeyMap.Add(VirtualKeys.SLEEP, Input.Key.Sleep);
|
||||||
|
|
||||||
// Keypad
|
// Keypad
|
||||||
for (int i = 0; i <= 9; i++)
|
for (int i = 0; i <= 9; i++)
|
||||||
{
|
{
|
||||||
KeyMap.Add((API.VirtualKeys)((int)API.VirtualKeys.NUMPAD0 + i), Input.Key.Keypad0 + i);
|
KeyMap.Add((VirtualKeys)((int)VirtualKeys.NUMPAD0 + i), Input.Key.Keypad0 + i);
|
||||||
|
|
||||||
}
|
}
|
||||||
KeyMap.Add(API.VirtualKeys.DECIMAL, Input.Key.KeypadDecimal);
|
KeyMap.Add(VirtualKeys.DECIMAL, Input.Key.KeypadDecimal);
|
||||||
KeyMap.Add(API.VirtualKeys.ADD, Input.Key.KeypadAdd);
|
KeyMap.Add(VirtualKeys.ADD, Input.Key.KeypadAdd);
|
||||||
KeyMap.Add(API.VirtualKeys.SUBTRACT, Input.Key.KeypadSubtract);
|
KeyMap.Add(VirtualKeys.SUBTRACT, Input.Key.KeypadSubtract);
|
||||||
KeyMap.Add(API.VirtualKeys.DIVIDE, Input.Key.KeypadDivide);
|
KeyMap.Add(VirtualKeys.DIVIDE, Input.Key.KeypadDivide);
|
||||||
KeyMap.Add(API.VirtualKeys.MULTIPLY, Input.Key.KeypadMultiply);
|
KeyMap.Add(VirtualKeys.MULTIPLY, Input.Key.KeypadMultiply);
|
||||||
|
|
||||||
// Navigation
|
// Navigation
|
||||||
KeyMap.Add(API.VirtualKeys.UP, Input.Key.Up);
|
KeyMap.Add(VirtualKeys.UP, Input.Key.Up);
|
||||||
KeyMap.Add(API.VirtualKeys.DOWN, Input.Key.Down);
|
KeyMap.Add(VirtualKeys.DOWN, Input.Key.Down);
|
||||||
KeyMap.Add(API.VirtualKeys.LEFT, Input.Key.Left);
|
KeyMap.Add(VirtualKeys.LEFT, Input.Key.Left);
|
||||||
KeyMap.Add(API.VirtualKeys.RIGHT, Input.Key.Right);
|
KeyMap.Add(VirtualKeys.RIGHT, Input.Key.Right);
|
||||||
}
|
}
|
||||||
catch (ArgumentException e)
|
catch (ArgumentException e)
|
||||||
{
|
{
|
||||||
|
@ -156,18 +156,18 @@ namespace OpenTK.Platform.Windows
|
||||||
internal void UpdateKeyboardList()
|
internal void UpdateKeyboardList()
|
||||||
{
|
{
|
||||||
int count = WinRawInput.DeviceCount;
|
int count = WinRawInput.DeviceCount;
|
||||||
API.RawInputDeviceList[] ridl = new API.RawInputDeviceList[count];
|
RawInputDeviceList[] ridl = new RawInputDeviceList[count];
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
ridl[i] = new API.RawInputDeviceList();
|
ridl[i] = new RawInputDeviceList();
|
||||||
API.GetRawInputDeviceList(ridl, ref count, API.RawInputDeviceListSize);
|
API.GetRawInputDeviceList(ridl, ref count, API.RawInputDeviceListSize);
|
||||||
|
|
||||||
// Discover keyboard devices:
|
// Discover keyboard devices:
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
uint size = 0;
|
uint size = 0;
|
||||||
API.GetRawInputDeviceInfo(ridl[i].Device, API.RawInputDeviceInfoEnum.DEVICENAME, IntPtr.Zero, ref size);
|
API.GetRawInputDeviceInfo(ridl[i].Device, RawInputDeviceInfoEnum.DEVICENAME, IntPtr.Zero, ref size);
|
||||||
IntPtr name_ptr = Marshal.AllocHGlobal((IntPtr)size);
|
IntPtr name_ptr = Marshal.AllocHGlobal((IntPtr)size);
|
||||||
API.GetRawInputDeviceInfo(ridl[i].Device, API.RawInputDeviceInfoEnum.DEVICENAME, name_ptr, ref size);
|
API.GetRawInputDeviceInfo(ridl[i].Device, RawInputDeviceInfoEnum.DEVICENAME, name_ptr, ref size);
|
||||||
string name = Marshal.PtrToStringAnsi(name_ptr);
|
string name = Marshal.PtrToStringAnsi(name_ptr);
|
||||||
Marshal.FreeHGlobal(name_ptr);
|
Marshal.FreeHGlobal(name_ptr);
|
||||||
if (name.ToLower().Contains("root"))
|
if (name.ToLower().Contains("root"))
|
||||||
|
@ -175,7 +175,7 @@ namespace OpenTK.Platform.Windows
|
||||||
// This is a terminal services devices, skip it.
|
// This is a terminal services devices, skip it.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (ridl[i].Type == API.RawInputDeviceType.KEYBOARD || ridl[i].Type == API.RawInputDeviceType.HID)
|
else if (ridl[i].Type == RawInputDeviceType.KEYBOARD || ridl[i].Type == RawInputDeviceType.HID)
|
||||||
{
|
{
|
||||||
//It's a keyboard – or a USB device that could be a keyboard
|
//It's a keyboard – or a USB device that could be a keyboard
|
||||||
|
|
||||||
|
@ -206,9 +206,9 @@ namespace OpenTK.Platform.Windows
|
||||||
kb.Description = deviceDesc;
|
kb.Description = deviceDesc;
|
||||||
|
|
||||||
// Register the keyboard:
|
// Register the keyboard:
|
||||||
API.RawInputDeviceInfo info = new API.RawInputDeviceInfo();
|
RawInputDeviceInfo info = new RawInputDeviceInfo();
|
||||||
int devInfoSize = API.RawInputDeviceInfoSize;
|
int devInfoSize = API.RawInputDeviceInfoSize;
|
||||||
API.GetRawInputDeviceInfo(ridl[i].Device, API.RawInputDeviceInfoEnum.DEVICEINFO,
|
API.GetRawInputDeviceInfo(ridl[i].Device, RawInputDeviceInfoEnum.DEVICEINFO,
|
||||||
info, ref devInfoSize);
|
info, ref devInfoSize);
|
||||||
|
|
||||||
kb.NumberOfLeds = info.Device.Keyboard.NumberOfIndicators;
|
kb.NumberOfLeds = info.Device.Keyboard.NumberOfIndicators;
|
||||||
|
@ -232,12 +232,12 @@ namespace OpenTK.Platform.Windows
|
||||||
|
|
||||||
internal void RegisterKeyboardDevice(Keyboard kb)
|
internal void RegisterKeyboardDevice(Keyboard kb)
|
||||||
{
|
{
|
||||||
API.RawInputDevice[] rid = new API.RawInputDevice[1];
|
RawInputDevice[] rid = new RawInputDevice[1];
|
||||||
// Keyboard is 1/6 (page/id). See http://www.microsoft.com/whdc/device/input/HID_HWID.mspx
|
// Keyboard is 1/6 (page/id). See http://www.microsoft.com/whdc/device/input/HID_HWID.mspx
|
||||||
rid[0] = new API.RawInputDevice();
|
rid[0] = new RawInputDevice();
|
||||||
rid[0].UsagePage = 1;
|
rid[0].UsagePage = 1;
|
||||||
rid[0].Usage = 6;
|
rid[0].Usage = 6;
|
||||||
rid[0].Flags = API.RawInputDeviceFlags.INPUTSINK;
|
rid[0].Flags = RawInputDeviceFlags.INPUTSINK;
|
||||||
rid[0].Target = windowHandle;
|
rid[0].Target = windowHandle;
|
||||||
|
|
||||||
if (!API.RegisterRawInputDevices(rid, 1, API.RawInputDeviceSize))
|
if (!API.RegisterRawInputDevices(rid, 1, API.RawInputDeviceSize))
|
||||||
|
@ -264,30 +264,30 @@ namespace OpenTK.Platform.Windows
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="rin"></param>
|
/// <param name="rin"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
internal bool ProcessKeyboardEvent(API.RawInput rin)
|
internal bool ProcessKeyboardEvent(RawInput rin)
|
||||||
{
|
{
|
||||||
//Keyboard key = keyboards[0];
|
//Keyboard key = keyboards[0];
|
||||||
//rin.Header.Device;
|
//rin.Header.Device;
|
||||||
switch (rin.Header.Type)
|
switch (rin.Header.Type)
|
||||||
{
|
{
|
||||||
case API.RawInputDeviceType.KEYBOARD:
|
case RawInputDeviceType.KEYBOARD:
|
||||||
bool pressed =
|
bool pressed =
|
||||||
rin.Data.Keyboard.Message == API.Constants.WM_KEYDOWN ||
|
rin.Data.Keyboard.Message == (int)WindowMessage.KEYDOWN ||
|
||||||
rin.Data.Keyboard.Message == API.Constants.WM_SYSKEYDOWN;
|
rin.Data.Keyboard.Message == (int)WindowMessage.SYSKEYDOWN;
|
||||||
|
|
||||||
// Generic control, shift, alt keys may be sent instead of left/right.
|
// Generic control, shift, alt keys may be sent instead of left/right.
|
||||||
// It seems you have to explicitly register left/right events.
|
// It seems you have to explicitly register left/right events.
|
||||||
switch (rin.Data.Keyboard.VKey)
|
switch (rin.Data.Keyboard.VKey)
|
||||||
{
|
{
|
||||||
case API.VirtualKeys.SHIFT:
|
case VirtualKeys.SHIFT:
|
||||||
keyboards[0][Input.Key.ShiftLeft] = keyboards[0][Input.Key.ShiftRight] = pressed;
|
keyboards[0][Input.Key.ShiftLeft] = keyboards[0][Input.Key.ShiftRight] = pressed;
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case API.VirtualKeys.CONTROL:
|
case VirtualKeys.CONTROL:
|
||||||
keyboards[0][Input.Key.ControlLeft] = keyboards[0][Input.Key.ControlRight] = pressed;
|
keyboards[0][Input.Key.ControlLeft] = keyboards[0][Input.Key.ControlRight] = pressed;
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case API.VirtualKeys.MENU:
|
case VirtualKeys.MENU:
|
||||||
keyboards[0][Input.Key.AltLeft] = keyboards[0][Input.Key.AltRight] = pressed;
|
keyboards[0][Input.Key.AltLeft] = keyboards[0][Input.Key.AltRight] = pressed;
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -349,9 +349,8 @@ namespace OpenTK.Platform.Windows
|
||||||
{
|
{
|
||||||
if (manual)
|
if (manual)
|
||||||
{
|
{
|
||||||
//keyboards.Clear();
|
keyboards.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
disposed = true;
|
disposed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue