private void CreateWindow() { // Ensure that the delegate doesn't get garbage collected by storing it as a field. _wndProcDelegate = new UnmanagedMethods.WndProc(WndProc); _className = Guid.NewGuid().ToString(); UnmanagedMethods.WNDCLASSEX wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf(typeof(UnmanagedMethods.WNDCLASSEX)), style = 0, lpfnWndProc = _wndProcDelegate, hInstance = Marshal.GetHINSTANCE(GetType().Module), hCursor = DefaultCursor, hbrBackground = (IntPtr)5, lpszClassName = _className, }; ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } _hwnd = CreateWindowOverride(atom); if (_hwnd == IntPtr.Zero) { throw new Win32Exception(); } Handle = new PlatformHandle(_hwnd, PlatformConstants.WindowHandleType); }
public DumbWindow(IntPtr?parent = null) { _wndProcDelegate = WndProc; var wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf <UnmanagedMethods.WNDCLASSEX>(), hInstance = UnmanagedMethods.GetModuleHandle(null), lpfnWndProc = _wndProcDelegate, lpszClassName = _className = "AvaloniaDumbWindow-" + Guid.NewGuid(), }; var atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); Handle = UnmanagedMethods.CreateWindowEx( 0, atom, null, (int)UnmanagedMethods.WindowStyles.WS_CHILD, 0, 0, 640, 480, parent ?? OffscreenParentWindow.Handle, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); }
private void CreateMessageWindow() { // Ensure that the delegate doesn't get garbage collected by storing it as a field. _wndProcDelegate = new UnmanagedMethods.WndProc(WndProc); UnmanagedMethods.WNDCLASSEX wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf <UnmanagedMethods.WNDCLASSEX>(), lpfnWndProc = _wndProcDelegate, hInstance = UnmanagedMethods.GetModuleHandle(null), lpszClassName = "AvaloniaMessageWindow " + Guid.NewGuid(), }; ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } _hwnd = UnmanagedMethods.CreateWindowEx(0, atom, null, 0, 0, 0, 0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (_hwnd == IntPtr.Zero) { throw new Win32Exception(); } }
public void Show() { var wndProcDelegate = new UnmanagedMethods.WndProc(WndProc); var defaultCursor = UnmanagedMethods.LoadCursor( IntPtr.Zero, new IntPtr((int)UnmanagedMethods.Cursor.IDC_ARROW)); var wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf <UnmanagedMethods.WNDCLASSEX>(), style = 0, lpfnWndProc = wndProcDelegate, hInstance = UnmanagedMethods.GetModuleHandle(null), hCursor = defaultCursor, hbrBackground = IntPtr.Zero, lpszClassName = "WalterlvSplashWindow" }; var atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); var hwnd = UnmanagedMethods.CreateWindowEx( 0, atom, null, (int)(UnmanagedMethods.WindowStyles.WS_OVERLAPPEDWINDOW | UnmanagedMethods.WindowStyles.WS_EX_DLGMODALFRAME), UnmanagedMethods.CW_USEDEFAULT, UnmanagedMethods.CW_USEDEFAULT, UnmanagedMethods.CW_USEDEFAULT, UnmanagedMethods.CW_USEDEFAULT, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); UnmanagedMethods.ShowWindow(hwnd, UnmanagedMethods.ShowWindowCommand.Restore); }
private void CreateMessageWindow() { // Ensure that the delegate doesn't get garbage collected by storing it as a field. this.wndProcDelegate = new UnmanagedMethods.WndProc(this.WndProc); UnmanagedMethods.WNDCLASSEX wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf(typeof(UnmanagedMethods.WNDCLASSEX)), lpfnWndProc = this.wndProcDelegate, hInstance = Marshal.GetHINSTANCE(this.GetType().Module), lpszClassName = "PerspexMessageWindow", }; ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } this.hwnd = UnmanagedMethods.CreateWindowEx(0, atom, null, 0, 0, 0, 0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (this.hwnd == IntPtr.Zero) { throw new Win32Exception(); } }
/// <summary> /// Creates a new native (Win32) helper window for receiving window messages. /// </summary> public NativeWindow() { // We need to store the window proc as a field so that // it doesn't get garbage collected away. _wndProc = new UnmanagedMethods.WndProc(WndProc); UnmanagedMethods.WNDCLASSEX wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf <UnmanagedMethods.WNDCLASSEX>(), lpfnWndProc = _wndProc, hInstance = UnmanagedMethods.GetModuleHandle(null), lpszClassName = _className }; ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } Handle = UnmanagedMethods.CreateWindowEx(0, atom, null, UnmanagedMethods.WS_POPUP, 0, 0, 0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (Handle == IntPtr.Zero) { throw new Win32Exception(); } }
public DumbWindow(bool layered = false, IntPtr?parent = null) { _wndProcDelegate = WndProc; var wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf <UnmanagedMethods.WNDCLASSEX>(), hInstance = UnmanagedMethods.GetModuleHandle(null), lpfnWndProc = _wndProcDelegate, lpszClassName = _className = "AvaloniaDumbWindow-" + Guid.NewGuid(), }; var atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); Handle = UnmanagedMethods.CreateWindowEx( layered ? (int)UnmanagedMethods.WindowStyles.WS_EX_LAYERED : 0, atom, null, (int)UnmanagedMethods.WindowStyles.WS_CHILD, 0, 0, 640, 480, parent ?? OffscreenParentWindow.Handle, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (layered) { UnmanagedMethods.SetLayeredWindowAttributes(Handle, 0, 255, UnmanagedMethods.LayeredWindowFlags.LWA_ALPHA); } }
private void CreateWindow() { // Ensure that the delegate doesn't get garbage collected by storing it as a field. _wndProcDelegate = new UnmanagedMethods.WndProc(WndProc); _className = "Avalonia-" + Guid.NewGuid(); UnmanagedMethods.WNDCLASSEX wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf <UnmanagedMethods.WNDCLASSEX>(), style = (int)(ClassStyles.CS_OWNDC | ClassStyles.CS_HREDRAW | ClassStyles.CS_VREDRAW), // Unique DC helps with performance when using Gpu based rendering lpfnWndProc = _wndProcDelegate, hInstance = UnmanagedMethods.GetModuleHandle(null), hCursor = DefaultCursor, hbrBackground = IntPtr.Zero, lpszClassName = _className }; ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } _hwnd = CreateWindowOverride(atom); if (_hwnd == IntPtr.Zero) { throw new Win32Exception(); } Handle = new PlatformHandle(_hwnd, PlatformConstants.WindowHandleType); _multitouch = Win32Platform.Options.EnableMultitouch ?? false; if (_multitouch) { RegisterTouchWindow(_hwnd, 0); } if (UnmanagedMethods.ShCoreAvailable) { uint dpix, dpiy; var monitor = UnmanagedMethods.MonitorFromWindow( _hwnd, UnmanagedMethods.MONITOR.MONITOR_DEFAULTTONEAREST); if (UnmanagedMethods.GetDpiForMonitor( monitor, UnmanagedMethods.MONITOR_DPI_TYPE.MDT_EFFECTIVE_DPI, out dpix, out dpiy) == 0) { _scaling = dpix / 96.0; } } }
private void CreateWindow() { // Ensure that the delegate doesn't get garbage collected by storing it as a field. _wndProcDelegate = new UnmanagedMethods.WndProc(WndProc); _className = Guid.NewGuid().ToString(); UnmanagedMethods.WNDCLASSEX wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf(typeof(UnmanagedMethods.WNDCLASSEX)), style = 0, lpfnWndProc = _wndProcDelegate, hInstance = Marshal.GetHINSTANCE(GetType().Module), hCursor = DefaultCursor, hbrBackground = IntPtr.Zero, lpszClassName = _className, }; ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } _hwnd = CreateWindowOverride(atom); if (_hwnd == IntPtr.Zero) { throw new Win32Exception(); } Handle = new PlatformHandle(_hwnd, PlatformConstants.WindowHandleType); if (UnmanagedMethods.ShCoreAvailable) { uint dpix, dpiy; var monitor = UnmanagedMethods.MonitorFromWindow( _hwnd, UnmanagedMethods.MONITOR.MONITOR_DEFAULTTONEAREST); if (UnmanagedMethods.GetDpiForMonitor( monitor, UnmanagedMethods.MONITOR_DPI_TYPE.MDT_EFFECTIVE_DPI, out dpix, out dpiy) == 0) { _scaling = dpix / 96.0; } } }
private void CreateWindow() { // Ensure that the delegate doesn't get garbage collected by storing it as a field. this.wndProcDelegate = new UnmanagedMethods.WndProc(this.WndProc); this.className = Guid.NewGuid().ToString(); UnmanagedMethods.WNDCLASSEX wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf(typeof(UnmanagedMethods.WNDCLASSEX)), style = 0, lpfnWndProc = this.wndProcDelegate, hInstance = Marshal.GetHINSTANCE(this.GetType().Module), hCursor = UnmanagedMethods.LoadCursor(IntPtr.Zero, (int)UnmanagedMethods.Cursor.IDC_ARROW), hbrBackground = (IntPtr)5, lpszClassName = this.className, }; ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } this.hwnd = UnmanagedMethods.CreateWindowEx( 0, atom, null, (int)UnmanagedMethods.WindowStyles.WS_OVERLAPPEDWINDOW, UnmanagedMethods.CW_USEDEFAULT, UnmanagedMethods.CW_USEDEFAULT, UnmanagedMethods.CW_USEDEFAULT, UnmanagedMethods.CW_USEDEFAULT, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (this.hwnd == IntPtr.Zero) { throw new Win32Exception(); } this.Handle = new PlatformHandle(this.hwnd, "HWND"); }
private void Initialize(HwndSourceParameters parameters) { // Ensure that the delegate doesn't get garbage collected by storing it as a field. this.wndProcDelegate = new UnmanagedMethods.WndProc(this.WndProc); this.className = Guid.NewGuid().ToString(); UnmanagedMethods.WNDCLASSEX wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf(typeof(UnmanagedMethods.WNDCLASSEX)), style = parameters.WindowClassStyle, lpfnWndProc = this.wndProcDelegate, hInstance = Marshal.GetHINSTANCE(this.GetType().Module), hCursor = UnmanagedMethods.LoadCursor(IntPtr.Zero, (int)UnmanagedMethods.Cursor.IDC_ARROW), hbrBackground = (IntPtr)5, lpszClassName = this.className, }; ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } this.Handle = UnmanagedMethods.CreateWindowEx( parameters.ExtendedWindowStyle, atom, parameters.WindowName, parameters.WindowStyle, parameters.PositionX, parameters.PositionY, parameters.Width, parameters.Height, parameters.ParentWindow, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (this.Handle == IntPtr.Zero) { throw new Win32Exception(); } }
private static IntPtr CreateParentWindow() { _wndProcDelegate = new UnmanagedMethods.WndProc(ParentWndProc); var wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf <UnmanagedMethods.WNDCLASSEX>(), hInstance = UnmanagedMethods.GetModuleHandle(null), lpfnWndProc = _wndProcDelegate, lpszClassName = "AvaloniaEmbeddedWindow-" + Guid.NewGuid(), }; var atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } var hwnd = UnmanagedMethods.CreateWindowEx( 0, atom, null, (int)UnmanagedMethods.WindowStyles.WS_OVERLAPPEDWINDOW, UnmanagedMethods.CW_USEDEFAULT, UnmanagedMethods.CW_USEDEFAULT, UnmanagedMethods.CW_USEDEFAULT, UnmanagedMethods.CW_USEDEFAULT, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (hwnd == IntPtr.Zero) { throw new Win32Exception(); } return(hwnd); }
public DumbWindow(bool layered = false, IntPtr?parent = null) { _wndProcDelegate = WndProc; var wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf <UnmanagedMethods.WNDCLASSEX>(), hInstance = UnmanagedMethods.GetModuleHandle(null), lpfnWndProc = _wndProcDelegate, lpszClassName = _className = "AvaloniaDumbWindow-" + Guid.NewGuid(), }; var atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); Handle = UnmanagedMethods.CreateWindowEx( layered ? (int)UnmanagedMethods.WindowStyles.WS_EX_LAYERED : 0, atom, null, (int)UnmanagedMethods.WindowStyles.WS_CHILD, 0, 0, 640, 480, parent ?? OffscreenParentWindow.Handle, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (Handle == IntPtr.Zero) { throw new InvalidOperationException("Unable to create child window for native control host. Application manifest with supported OS list might be required."); } if (layered) { UnmanagedMethods.SetLayeredWindowAttributes(Handle, 0, 255, UnmanagedMethods.LayeredWindowFlags.LWA_ALPHA); } }
private void CreateMessageWindow() { // Ensure that the delegate doesn't get garbage collected by storing it as a field. _wndProcDelegate = new UnmanagedMethods.WndProc(WndProc); UnmanagedMethods.WNDCLASSEX wndClassEx = new UnmanagedMethods.WNDCLASSEX { cbSize = Marshal.SizeOf(typeof(UnmanagedMethods.WNDCLASSEX)), lpfnWndProc = _wndProcDelegate, hInstance = Marshal.GetHINSTANCE(GetType().Module), lpszClassName = "AvaloniaMessageWindow", }; ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } _hwnd = UnmanagedMethods.CreateWindowEx(0, atom, null, 0, 0, 0, 0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (_hwnd == IntPtr.Zero) { throw new Win32Exception(); } }