Win UI3开发笔记(六)设置软件最小尺寸

想设置最小尺寸为1000*100像素怎么做?

一、问gpt

using Microsoft.UI.ViewManagement;
using Windows.UI.ViewManagement;// 在应用程序启动时设置最小缩放尺寸
ApplicationView.PreferredLaunchViewSize = new Size { Width = 800, Height = 600 };
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;

结果:没有效果。

Application.Current.Window.SetPreferredMinSize(new Size(800, 600));

代码报错跑不了。

二、参考网站1

使用SetWindowSubclass函数钩住WM_GETMINMAXINFO并设置min大小,没有给出代码。

三、https://github.com/microsoft/microsoft-ui-xaml/issues/2945
问题:如何设置最小窗口大小(桌面)

给出的解决方案:

  1. ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(800, 600));
    直接跑不起来了,报错:System.Runtime.InteropServices.COMException:“找不到元素。 (0x80070490)”

  2. Desktop WinUI 3在Window类上还没有MinSize或MaxSize属性,对于开发人员来说,这样做并不简单。在Win32中执行此操作的方法是侦听消息WM_GETMINMAXINFO,但您需要首先访问在Windows中获取消息的过程(WindowProc)。不幸的是,WinUI 3 Desktop没有公开它,所以解决方案是子类化。子类允许在WindowProc之前拦截和处理发送到窗口的消息。
    但是PInvoke一直报错。

四、https://github.com/unoplatform/uno/discussions/9092
膜拜大佬,用最简单的方法解决问题

appwindow尺寸改变时,写在函数里,当尺寸小于最小的宽高时resize当前最小宽高。
原文代码:

/// <summary>
/// Sets the size of the Application Window when running in Windows.
/// </summary>
/// <param name="window"></param>o
/// <param name="width"></param>
/// <param name="height"></param>
/// <returns></returns>
public static bool Resize(Window window, int width, int height)
{try{#if NET7_0_WINDOWS10_0_18362// Use 'this' rather than 'window' as variable if this is about the current window.IntPtr hWnd = WinRT.Interop.WindowNative.GetWindowHandle(window);Microsoft.UI.WindowId windowId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(hWnd);AppWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(windowId);AppWindow.Resize(new Windows.Graphics.SizeInt32 { Width = width, Height = height });AppWindow.Changed += AppWindow_Changed;
#else_ = Log.Warn($"{nameof(WindowHelper)}.{nameof(Resize)}() is not currently supported on this platform.");#endifreturn true;}catch (Exception ex){_ = Log.Error(ex);}return false;
}private static void AppWindow_Changed(Microsoft.UI.Windowing.AppWindow sender, Microsoft.UI.Windowing.AppWindowChangedEventArgs args)
{try{
#if NET7_0_WINDOWS10_0_18362if (AppWindow == null)return;if (AppWindow.Size.Height < MinHeight && AppWindow.Size.Width < MinWidth)AppWindow.Resize(new Windows.Graphics.SizeInt32 { Width = MinWidth, Height = MinHeight });else if (AppWindow.Size.Height < MinHeight)AppWindow.Resize(new Windows.Graphics.SizeInt32 { Width = AppWindow.Size.Width, Height = MinHeight });else if (AppWindow.Size.Width < MinWidth)AppWindow.Resize(new Windows.Graphics.SizeInt32 { Width = MinWidth, Height = AppWindow.Size.Height });
#endif}catch (Exception ex){_ = Log.Error(ex);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营(动态规划10,11 ,12 股票问题)| 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II

动态规划10 动态规划5步曲&#xff0c;个人感觉应该加一步状态分析 状态分析&#xff1a; 列出所有的状态&#xff0c;将状态归纳后定义dp数组状态转移&#xff0c;状态怎么转移也就是递推公式是什么 买卖股票的动规五部曲分析如下&#xff1a; 1 确定dp数组&#xff08;d…

Python - Pycharm 配置 autopep8 并设置快捷键

什么是 PEP8 官方&#xff1a;PEP 8 – Style Guide for Python Code | peps.python.org PEP8 是 Python 官方推出的一套编码的规范&#xff0c;只要代码不符合它的规范&#xff0c;就会有相应的提示&#xff0c;还可以让代码自动的格式化 Pycharm 自带的代码格式化 ​ 但这…

2024年Android笔试题总,如何系统全面性学习Android语言

开头 让我们一起来看看&#xff0c;字节跳动的第三面&#xff0c;面试官都问了什么&#xff1f;&#xff08;第一二面的题目及答案已整理&#xff0c;需要的可以在文末领取&#xff09; 从七月中旬开始&#xff0c;我前前后后差不多一共投递了八十份简历&#xff0c;到目前为…

游戏网站为了提升谷歌的搜索排名,应该在html等方面做什么优化?

一&#xff1a;为了提升谷歌的搜索排名&#xff0c;游戏网站可以在HTML等方面进行以下优化&#xff1a; 关键词优化&#xff1a;在HTML的标题标签&#xff08;<title>&#xff09;和Meta标签中包含与游戏相关的关键词&#xff0c;以便搜索引擎能够更好地理解网站内容。 …

PyTorch笔记:标量向量矩阵张量+维度+常用API+计算图+自动微分计算

PyTorch 张量 默认数据类型是torch.float32 维度 0&#xff1a;标量1&#xff1a;向量2&#xff1a;矩阵… 标量&向量&矩阵&张量 标量&#xff1a;0维空间中一个点向量&#xff1a;1维空间中一条线矩阵&#xff1a;2维空间中一个面三维张量&#xff1a;三维空…

刷题第10天

代码随想录刷题第10天 |● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 239. 滑动窗口最大值 唉&#xff0c;好难&#xff0c;先记个思路吧 class Solution { private:class MyQueue { //单调队列&#xff08;从大到小&#xff09;public:deque<int> que; // 使用deq…

章鱼网络进展月报 | 2024.2.1-2.29

章鱼网络大事摘要 1、Omnity 完成了核心组件的原型开发&#xff0c;正在测试&#xff0c;未来将首先支持 Runes 资产跨链。 2、$NEAR Restaking 质押总量超过400万美元。 3、章鱼网络受邀参加 ETHDenver 2024&#xff0c;并且与 ICP 共同组织活动&#xff0c;介绍 Omnity 的…

速看!2024深圳国际电子化工新材料展览会

2024深圳国际电子化工新材料展览会 Shenzhen International Exhibition of New Electronic and chemical materials2024 基本信息&#xff1a; 时间&#xff1a;2024年6月26&#xff5e;28日 地点&#xff1a;深圳国际会展中心 组织机构&#xff1a; 主办单位&#xff1a…

【C语言】linux内核netif_receive_skb

一、中文注释 /*** netif_receive_skb - 从网络处理接收缓冲区* skb: 要处理的缓冲区** netif_receive_skb() 是主要的数据接收处理函数。* 它总是成功的。由于拥塞控制或协议层的原因&#xff0c;缓冲区可能在处理过程中被丢弃。** 这个函数只能在软中断&#xff08;softirq&…

洛阳旅游攻略

洛阳旅游攻略 第一天&#xff08;抵达当天&#xff09;&#xff1a; 1.先将行李放到酒店—2.老城十字街&#xff08;打车可能会堵车&#xff09;—3.洛邑古城—4.丽景门&#xff08;步行&#xff09; 第二天&#xff1a; 1.早起吃早餐—&#xff08;打车三十分钟&#xff0c…

guava的使用

对数组操作前判断是否会越界&#xff1a; List<String> s new ArrayList<>();System.out.println(Preconditions.checkElementIndex(2,s.size(),"下标长度超过了")); 是否为空 String s null;System.out.println(Preconditions.checkNotNull(s)); 判空…

Android使用Sensor.TYPE_STEP_COUNTER计步器传感器进行步数统计

1、首先&#xff0c;申请权限 必须声明 ACTIVITY_RECOGNITION 权限&#xff0c;以便您的应用在运行 Android 10 (API 级别 29) 或更高版本的设备上使用此传感器。 Manifest.xml也记得声明 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {Log.d(TAG, "[权限]&quo…

Docker的安装跟基础使用一篇文章包会

目录 国内源安装新版本 1、清理环境 2、配置docker yum源 3、安装启动 4、启动Docker服务 5、修改docker数据存放位置 6、配置加速器 现在我们已经完成了docker的安装和初始配置。以下为基本测试使用 自带源安装的版本太低 docker官方源安装的话速度太慢了 所以本篇文…

iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践

移动端的自动化测试&#xff0c;最常见的是 Android 自动化测试&#xff0c;我个人觉得 Android 的测试优先级会更高&#xff0c;也更开放&#xff0c;更容易测试&#xff1b;而 iOS 相较于 Android 要安全稳定的多&#xff0c;但也是一个必须测试的方向&#xff0c;这个系列文…

STM32(18)I2C

串口通信缺点 一个设备就需要一个串口&#xff0c;单片机可能没有那么多串口外设 总线/非总线 主机&#xff1a;负责管理总线&#xff0c;可控制波特率、数据的通信方向 波特率&#xff1a;由主机产生波特率信号 数据的传输 每个从机都有7位地址&#xff0c;最后移位是读&a…

力扣--动态规划516.最长回文子序列

思路分析&#xff1a; 创建一个二维动态规划表dp&#xff0c;其中dp[i][j]表示在子串s[i...j]中的最长回文子序列的长度。初始化基本情况&#xff1a;对角线上的元素dp[i][i]都为1&#xff0c;因为单个字符本身就是长度为1的回文子序列。从字符串末尾向前遍历&#xff0c;填充…

IPsec VPN协议框架

IPsec是IETF&#xff08;Internet Engineering Task Force&#xff09;制定的一组开放的网络安全协议。它并不是一个单独的协议&#xff0c;而是一系列为IP网络提供安全性的协议和服务的集合&#xff0c;包括认证头AH&#xff08;Authentication Header&#xff09;和封装安全载…

java排序简单总结和推荐使用套路(数据排序,结构体排序)

了解int和Integer的区别 int是Java的基本数据类型&#xff0c;用于表示整数值。Integer是int的包装类&#xff0c;它是一个对象&#xff0c;可以包含一个int值并提供一些额外的功能。 Java集合框架中的集合类&#xff08;如List、Set、Map&#xff09;只能存储对象&#xff0c;…

计算机基础专升本笔记十三-PowerPoint常用快捷键大全

计算机基础专升本笔记十三-PowerPoint常用快捷键大全 PowerPoint常用快捷键 按键作用Ctrl A全选表格Ctrl B字体加粗Ctrl C复制Ctrl D文本、图形、图片等距复制Ctrl E居中Ctrl F查找Ctrl G组合&#xff0c;可统一移动&#xff0c;改变大小Ctrl H隐藏鼠标箭头Ctrl I斜…

第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 统计子矩阵

#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<vector> #include<queue>using namespace std;int cnt,temp; int n,m,K; int a[505][505]; int pre[505][505];//二维前缀和void sol() {cin>>…