Пример #1
0
        void SubClassingWin32()
        {
            MauiWinUIApplication.Current.Services?.InvokeLifecycleEvents <WindowsLifecycle.OnPlatformWindowSubclassed>(
                del => del(this, new WindowsPlatformWindowSubclassedEventArgs(WindowHandle)));

            newWndProc = new PlatformMethods.WindowProc(NewWindowProc);
            oldWndProc = PlatformMethods.SetWindowLongPtr(WindowHandle, PlatformMethods.WindowLongFlags.GWL_WNDPROC, newWndProc);

            IntPtr NewWindowProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
            {
                if (msg == WindowsPlatformMessageIds.WM_SETTINGCHANGE || msg == WindowsPlatformMessageIds.WM_THEMECHANGE)
                {
                    MauiWinUIApplication.Current.Application?.ThemeChanged();
                }

                if (msg == WindowsPlatformMessageIds.WM_DPICHANGED)
                {
                    var dpiX = (short)(long)wParam;
                    var dpiY = (short)((long)wParam >> 16);

                    var window = this.GetWindow();
                    if (window is not null)
                    {
                        window.DisplayDensityChanged(dpiX / DeviceDisplay.BaseLogicalDpi);
                    }
                }

                MauiWinUIApplication.Current.Services?.InvokeLifecycleEvents <WindowsLifecycle.OnPlatformMessage>(
                    m => m.Invoke(this, new WindowsPlatformMessageEventArgs(hWnd, msg, wParam, lParam)));

                return(PlatformMethods.CallWindowProc(oldWndProc, hWnd, msg, wParam, lParam));
            }
        }
Пример #2
0
        void SubClassingWin32()
        {
            MauiWinUIApplication.Current.Services?.InvokeLifecycleEvents <WindowsLifecycle.OnPlatformWindowSubclassed>(
                del => del(this, new WindowsPlatformWindowSubclassedEventArgs(WindowHandle)));

            newWndProc = new PlatformMethods.WindowProc(NewWindowProc);
            oldWndProc = PlatformMethods.SetWindowLongPtr(WindowHandle, PlatformMethods.WindowLongFlags.GWL_WNDPROC, newWndProc);

            IntPtr NewWindowProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
            {
                if (msg == WindowsPlatformMessageIds.WM_SETTINGCHANGE || msg == WindowsPlatformMessageIds.WM_THEMECHANGE)
                {
                    MauiWinUIApplication.Current.Application?.ThemeChanged();
                }

                MauiWinUIApplication.Current.Services?.InvokeLifecycleEvents <WindowsLifecycle.OnPlatformMessage>(
                    m => m.Invoke(this, new WindowsPlatformMessageEventArgs(hWnd, msg, wParam, lParam)));

                return(PlatformMethods.CallWindowProc(oldWndProc, hWnd, msg, wParam, lParam));
            }
        }
Пример #3
0
        public static void MapFlowDirection(IWindowHandler handler, IWindow view)
        {
            var WindowHandle = handler.PlatformView.GetWindowHandle();

            // Retrieve current extended style
            var  extended_style = PlatformMethods.GetWindowLongPtr(WindowHandle, PlatformMethods.WindowLongFlags.GWL_EXSTYLE);
            long updated_style;

            if (view.FlowDirection == FlowDirection.RightToLeft)
            {
                updated_style = extended_style | (long)PlatformMethods.ExtendedWindowStyles.WS_EX_LAYOUTRTL;
            }
            else
            {
                updated_style = extended_style & ~((long)PlatformMethods.ExtendedWindowStyles.WS_EX_LAYOUTRTL);
            }

            if (updated_style != extended_style)
            {
                PlatformMethods.SetWindowLongPtr(WindowHandle, PlatformMethods.WindowLongFlags.GWL_EXSTYLE, updated_style);
            }
        }
Пример #4
0
 private void _PDTUpdateButton_ItemClick(object sender, ItemClickEventArgs e)
 {
     PlatformMethods.UpdatePDTFiles();
 }
Пример #5
0
 /// <summary>Повне оновлення</summary>
 private void openFullUpdate_ItemClick(object sender, ItemClickEventArgs e)
 {
     PlatformMethods.UpdateSolution();
 }
Пример #6
0
 /// <summary>Онивлення БД без форми</summary>
 private void FastDBUpdateButton_ItemClick(object sender, ItemClickEventArgs e)
 {
     PlatformMethods.UpdateDB(false);
 }
Пример #7
0
 /// <summary>Оновлення БД з формою</summary>
 private void UpdateDBStructureButton_ItemClick(object sender, ItemClickEventArgs e)
 {
     PlatformMethods.UpdateDB(true);
 }