- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 Winforms 应用程序上工作,代码设置初始窗口状态。
它正在使用 SystemInformation.PrimaryMonitorMaximizedWindowSize
。
通常程序似乎可以运行,但是当我在调试器中查看 SystemInformation
时,我看到以下内容:
PrimaryMonitorMaximizedWindowSize
:宽度
= 1696,高度
= 1026PrimaryMonitorSize
:宽度
= 1680,高度
= 1050
PrimaryMonitorSize
是我的显示器的分辨率,所以这是有道理的。
1026 的 PrimaryMonitorMaximizedWindowSize
高度感觉正确 (1050 - 1026 = 24)
24 像素似乎是 Windows 任务栏的大小。
然后我解锁 Windows 任务栏并将其调整为两倍高。
用像素尺测量它显示大约 80 像素。但是我现在得到这个 PrimaryMonitorSize
:Width
= 1680,Height
= 984。实际窗口区域似乎在 970 像素左右。
某处 .NET 正在获得“有趣”的值,至少从像素的角度来看是没有意义的。
这些值从何而来?
我怎样才能理解这些值(value)观?
最佳答案
并不是说这将是最佳答案,但我会尝试解决这个问题。
在引擎盖下SystemImformation
在 user32 DLL 中调用至少两个 native API 调用。
GetSystemMetrics
(1)SystemParametersInfo
(2)借助一个小 helper (请参阅此答案的末尾),我获得了以下值,这些值基本上可以让您深入了解所观察到的行为。在下表中,我显示了属性、框上的值以及调用了哪个 native API 和提供了哪些参数。例如“(1) 32”表示 GetSystemMetrics
以 32 作为参数调用。两个数字表示 API 被调用了两次。
| SystemInformation | Value | native api |
---------------------------------------------------------------------------------------
| FrameBorderSize | {Width=8, Height=8} | (1) 32 33
| PrimaryMonitorMaximizedWindowSize | {Width=1296, Height=916} | (1) 61 62
| PrimaryMonitorSize | {Width=1280, Height=1024} | (1) 0 1
| WorkingArea | {X=0,Y=0,Width=1280,Height=984} | (2) 48
PrimaryMonitorSize
确实是您的视频卡报告的大小(API 还提到将调用 GetDeviceCaps
)。
因为 WorkingArea
是屏幕的边界,不包括停靠的工具栏和 taskbar,如果你只有一个任务栏,你可以推断我的任务栏的高度大约是 1024- 984 = 40 像素。PrimaryMonitorMaximizedWindowSize
是窗口覆盖工作区域的大小,不包括 窗口边框。由于 FrameBorderSize
在两个方向上都是 8,宽度和高度得到 2 * 8 = 16 添加到 WorkingArea
大小,因此给出 1296 和 916 的大小以准确适应我的 WorkingArea
。
如果我解锁我的任务栏并调整它的大小,WorkingArea:{X=0,Y=0,Width=1280,Height=942}
的新值显示额外的一行是 42 像素。
如何转储属性
foreach(var p in typeof(SystemInformation).GetProperties().OrderBy(n => n.Name))
{
Console.WriteLine("{0}:{1}", p.Name, p.GetValue(null,null));
}
关于c# - .NET SystemInformation.PrimaryMonitorMaximizedWindowSize 显示大于 PrimaryMonitorSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236364/
我不太确定为什么较大字符串(“cat”和“dog”)的答案不一致。我正在用链接列表和模板的使用做一些事情。我的好奇心促使我修改模板和函数重载。如果有人能解释发生了什么,我将不胜感激。谢谢你。 #inc
目前我必须编写这样的查询 SELECT * FROM table WHERE value1 > 5000 OR value2 > 5000 OR value3 > 5000 OR value4 > 5
我想创建一个如下所示的查询,但我不确定如何正确编码, 我希望它在开始时间的 1 小时内返回所有预订,这是我想出的: SELECT BookingId, StartTime FROM Booking W
这个问题已经有答案了: How to check if a number is between two values? (12 个回答) 已关闭 6 年前。 我目前正在 Codecademy 上学习
我想验证用户输入。如果用户输入的数字大于 3,则应抛出错误“Too high”,如果小于 0.15,则应抛出“Too low”错误。如果它在 3 到 0.15 之间,那么它应该显示“好的”。 我的代码
我有一个拖动脚本,我在其中拖动 div.slider,我正在跟踪 div.slider 的“左”值,并在它大于 68 时让它淡出,但问题是它当它达到 6 而不是 68 时淡出。如果我将数字更改为 85
是否有一种常见的模式如何在数据库(postgresql)中存储这样的条件,然后以简单的方式从数据库中获取这些数据,并在前端将其与我们在前端的值 SE 进行比较(以获得正确的“值” "): condit
如何大于/小于内部工作 如果我将 5 与 100 与 5 与 2,147,483,647 (Integer.MAX_VALUE) 进行比较,性能会受到多大影响 5 < 100 and 5 < Inte
当我运行此查询时它有效 SELECT sum( amount ) AS balance FROM balance WHERE amount >= 100 但是当我想过滤用户 ID 时,它返回 NULL
我有下表: account(id, balance, bank_branch) 我想选择账户余额大于其 bank_branch 平均余额的所有账户 我试过了 Select id from accoun
你们有没有人知道如何搜索所有大于指定数字的数字? 例如:所有单据编号>65 我试过这样:documentNumber: [65 TO *] 但我收到异常,因为 lucene 期望解析一个没有 * 的数
我正在使用 Prolog 算法,并且有一个生成抽象语法树的程序,例如 plus(num(1),num(2))这只是 1+2 .这是通过使用 DCG 来完成的。在这个例子中 plus(num(1),nu
是否使用 Sin(720) 或 Cos(1440)(以度为单位的角度)? 无论是在计算机编程中还是在任何其他情况下? 一般来说,是否有任何角度的 Sin/Cosine/Tan 使用 大于360? 在物
我发现了一些与此相关的问题,但没有一个真正回答了我的问题。 我有一个像这样的表格文件: 2 10610 0 0 0 0.0105292 2 10649 0 0 0
我是 Prolog 的新手,我正在尝试解决这个练习: Define a predicate greater_than/2 that takes two numerals in the notation
我想选择具有出现次数的不同键,此查询似乎有效: SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*) FROM ItemMetaData GROU
我需要存储和使用大于 ULLONG_MAX 的数值。 我需要对这些值进行算术运算,所以我认为存储为 char** 不是一个选项。 在这些情况下,有没有办法动态创建额外的 long 前缀? 谢谢大家。根
我是 Prolog 的新手,我正在尝试解决这个练习: Define a predicate greater_than/2 that takes two numerals in the notation
处理已知大小但大于 64 位的位掩码(即执行所有位操作)的最有效的数据结构是什么? 字节[]? 大整数?完全是别的东西吗? 需要与 Java 7 兼容,并且对于诸如此类的事情应该很快(或者至少与合理预
编辑:抱歉进行了许多编辑。我自己都忘记写了什么了。 我使用 JPanel,将 BoxLayout 作为 JFrame 的根面板。我向此根面板添加了另外两个面板:带有 FlowLayou 的 Butto
我是一名优秀的程序员,十分优秀!