Avalonia能否使用Native句柄承载Window?
创始人
2024-11-12 19:00:25
0

Avalonia本身没有提供直接使用Native句柄承载窗口的方法,但可以通过使用IWIndowImpl实现自定义的窗口承载方式。

下面是一个示例代码,可以实现使用Native句柄承载Avalonia窗口:

using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Platform;
using Avalonia.Platform;
using Avalonia.Rendering;
using Avalonia.Threading;

using System;

namespace NativeWindowImpl
{
    class Program
    {
        static void Main(string[] args)
        {
            // 初始化Avalonia
            AppBuilder.Configure()
                .UsePlatformDetect()
                .SetupWithoutStarting();

            // 创建Native窗口
            var nativeWindow = CreateNativeWindow();

            // 创建Avalonia窗口
            Window window = new Window();
            window.Title = "Avalonia Window with Native Handle";
            window.Width = 640;
            window.Height = 480;

            // 获取窗口句柄
            IntPtr hWnd = nativeWindow.Handle;

            // 使用IWIndowImpl承载窗口
            var windowImpl = AvaloniaLocator.Current.GetService();
            windowImpl.Attach(window);

            // 将Avalonia窗口与Native窗口绑定
            windowImpl.Resize(new PixelSize((int)window.Width, (int)window.Height));
            windowImpl.SetOwner(hWnd);
            windowImpl.Show();

            // 保证Avalonia资源已经准备好
            Dispatcher.UIThread.InvokeAsync(() =>
            {
                // 关闭Native窗口
                nativeWindow.Close();
            });

            // 运行Avalonia应用程序
            AppBuilder.Configure()
                .UsePlatformDetect()
                .SetupWithoutStarting()
                .StartWithClassicDesktopLifetime(args);
        }

        private static INativeWindow CreateNativeWindow()
        {
            // 创建一个Win32窗口
            var factory = AvaloniaLocator.Current.GetService();
            var hwndSource = factory.CreateHwnd(new HwndCreationParameters
            {
                ExtendClientAreaToDecorationsHint = true,
                ParentHandle = IntPtr.Zero

相关内容

热门资讯

最新消息!哈糖大菠萝可以开挂吗... 最新消息!哈糖大菠萝可以开挂吗,约局吧德州可以透视吗(透视)详细教程(有挂秘诀)-哔哩哔哩1、让任何...
透视真的!红龙poker辅助,... 透视真的!红龙poker辅助,wepoker私局辅助(透视)总结教程(有挂方式)-哔哩哔哩1、金币登...
在玩家背景下!wpk插件辅助,... 在玩家背景下!wpk插件辅助,哈糖大菠萝免费辅助器(透视)了解教程(今日头条)-哔哩哔哩1)哈糖大菠...
透视模拟器!拱趴大菠萝挂哪里,... 透视模拟器!拱趴大菠萝挂哪里,wepokerplus辅助(透视)详细教程(有挂方式)-哔哩哔哩透视模...
于此同时!拱趴大菠萝自动计算机... 于此同时!拱趴大菠萝自动计算机器人,wepoker透视脚本免费(透视)科普教程(真的有挂)-哔哩哔哩...
辅助透视!德州来玩辅助器,we... 辅助透视!德州来玩辅助器,wepoker透视辅助下载(透视)普及教程(有挂规律)-哔哩哔哩1.wep...
透视科技!德州hhpoker脚... 透视科技!德州hhpoker脚本,wepoker怎么开辅助(透视)科普教程(有挂教学)-哔哩哔哩1)...
相较于以往!聚星ai辅助工具激... 相较于以往!聚星ai辅助工具激活码,模拟器打开hhpoker(透视)了解教程(的确有挂)-哔哩哔哩1...
透视计算!wepoker底牌透... 透视计算!wepoker底牌透视,佛手在线是不是有挂(透视)详细教程(有挂解惑)-哔哩哔哩佛手在线是...
透视透视!wepoker-h5... 透视透视!wepoker-h5下载,约局吧德州可以透视吗(透视)必备教程(有挂教学)-哔哩哔哩透视透...