👌

.NET6 WinUi3 WebView2を使って開発1

2021/11/23に公開

.NET6 WinUi3 WebView2を利用してライブ配信サイトのコメントを表示するプログラムを作ってみてます。
C#側でJSONを取得してそれをWebView2側に流しています。

WinUi3の複数ウインドウが試験バージョンでしかまだ対応していないので、
かなり不安定な気がしています。
ツイートのように最低限の動作はできましたが、まだいろいろ問題があります。

少し前にあったWinUi3の開発者の動画をみた限り
複数ウインドウ対応がかなり望まれているようで、対応は最優先にして頂けそうでした。

またWinUi3のウインドウ関連の制御があまり自由にできなくなっております。
※サイズやポジションなど
いろいろ調べた限り
ハンドルを取得してWin32のAPIを呼び出すことにより設定できました。

    public static void SetWindowSize(Window window, int width, int height)
    {
        IntPtr hwnd = WindowNative.GetWindowHandle(window);
        var dpi = PInvoke.User32.GetDpiForWindow(hwnd);
        float scalingFactor = (float)dpi / 96;
        width = (int)(width * scalingFactor);
        height = (int)(height * scalingFactor);

        PInvoke.User32.SetWindowPos(hwnd, PInvoke.User32.SpecialWindowHandles.HWND_TOP,
                                    0, 0, width, height,
                                    PInvoke.User32.SetWindowPosFlags.SWP_NOMOVE);

Discussion