SDL2 如何在第二台显示器上定位窗口?

2023-12-19

我在用SDL_SetWindowPosition定位我的窗口。我可以使用此功能将窗口定位到另一台显示器上吗?

UPDATE

Using SDL_GetDisplayBounds在 Windows 10 中更改文本大小时,不会返回正确的显示器位置。有什么想法可以解决此问题吗?


SDL2 使用全局屏幕空间坐标系。每个显示设备在此坐标空间内都有自己的边界。以下示例将窗口放置在第二个显示设备上:

// enumerate displays
int displays = SDL_GetNumVideoDisplays();
assert( displays > 1 );  // assume we have secondary monitor

// get display bounds for all displays
vector< SDL_Rect > displayBounds;
for( int i = 0; i < displays; i++ ) {
    displayBounds.push_back( SDL_Rect() );
    SDL_GetDisplayBounds( i, &displayBounds.back() );
}

// window of dimensions 500 * 500 offset 100 pixels on secondary monitor
int x = displayBounds[ 1 ].x + 100;
int y = displayBounds[ 1 ].y + 100;
int w = 500;
int h = 500;

// so now x and y are on secondary display
SDL_Window * window = SDL_CreateWindow( "title", x, y, w, h, FLAGS... );

看一下定义SDL_WINDOWPOS_CENTERED in SDL_video.h我们看到它被定义为

#define SDL_WINDOWPOS_CENTERED         SDL_WINDOWPOS_CENTERED_DISPLAY(0)

所以我们也可以使用宏SDL_WINDOWPOS_CENTERED_DISPLAY( n ) where n是显示索引。

Windows 10 更新 - DPI 缩放问题

SDL2 和更改 Windows 中的 DPI 比例(即文本比例)似乎确实存在错误。

以下是与该问题相关的两个错误报告。他们显然仍然没有解决。

https://bugzilla.libsdl.org/show_bug.cgi?id=3433 https://bugzilla.libsdl.org/show_bug.cgi?id=3433

https://bugzilla.libsdl.org/show_bug.cgi?id=2713 https://bugzilla.libsdl.org/show_bug.cgi?id=2713

潜在的解决方案

我确信 OP 可以使用 WIN32 api 来确定 dpi 比例,例如scale != 100%,然后据此修正边界。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SDL2 如何在第二台显示器上定位窗口? 的相关文章

  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单

随机推荐

  • kotlin android 片段返回后空回收器视图

    我有这个 android 片段 class MainFragment BaseFragment private val recyclerView by lazy find
  • 运行中的配置变量!框架

    我是 Play 的新手 编写了我的第一个应用程序 该应用程序有一组它所依赖的 URL 用于从中提取数据并在 XML 响应上返回有效的 URL 该应用程序需要在不同的环境 Dev Staging 和 Prod 中运行 并且每个环境都需要自己的
  • Google 语音识别 API:每个单词的时间戳?

    可以使用 Google 的语音识别 API 通过发出请求来获取音频文件 WAV MP3 等 的转录http www google com speech api v2 recognize 示例 我说过 一二三五 在 WAV 文件中 Googl
  • Mach-O 符号存根 (IOS)

    我正在尝试了解 Mach o 文件的工作原理 并且利用可用的在线资源 特别是这里的 Apple 页面 http developer apple com library mac documentation developertools con
  • 如何通过类名获取同级元素,然后仅使用 Javascript 隐藏它?

    我有这个 html 结构 div div div class content div 我想隐藏名为的类的元素content给定同级元素 id 为xyz 在 jQuery 中我可以轻松地这样做 xyz siblings content css
  • Google Analytics iOS 活动跟踪开发测试

    我正在尝试对我的 iOS 应用程序使用 Google Analytics iOS 活动跟踪 但在将我的应用程序上传到 Appstore 之前 我想知道一切是否正常工作 我想在以下函数处放置一个断点 application UIApplica
  • XSLT 获取特定标记的第一次出现

    假设我有一个完整的 html 文档作为 XML 输入 如果我只想输出 html 中的第一个 或任何 图像 XSLT 文件会是什么样子 选择第一个的一个 XPath 表达式 img 文档中的元素是 img 1 Do note that 一个经
  • 如何规避 Perl 的字符串转义 s/// 中的替换字符串?

    我不知道到底该怎么称呼它 但我已经能够用两条单行语句重现我的问题 从包含以下内容的文件 test txt 开始 foo 运行以下命令后 在 bash 中 perl n e s w oo 1ar print test txt 输出是 far
  • 使用 pyparsing 进行部分评估

    我需要能够采用使用 OpenDocument 公式语法的公式 将其解析为 Python 可以理解的语法 但无需评估变量 然后能够通过更改变量的值来多次评估该公式 公式可以是用户输入 因此 pyparsing 使我能够有效处理公式语法并清理用
  • 我的调用 async/await 在我的操作中返回 Promise {}

    您好 我对 api 调用非常陌生 我开始使用 axios 来获取一副简单的纸牌 我正在尝试执行一个简单的 axios 调用 当我通过控制台记录我的资源时 它会为我提供所需的内容 但是当我返回它时 它给了我 Promise 据我所知 这是因为
  • 如何为通用 lambda 参数定义模板参数? [复制]

    这个问题在这里已经有答案了 解释 当我编写 lambda 作为以 lambda 作为参数的泛型函数的参数时 CLion 及其标准编译器给我一个错误 即 候选模板被忽略 该 lambda 采用泛型类型T并返回另一个未知类型A 我正在编写的容器
  • 为什么fragment中的getContext()有时会返回null?

    Why getContext 有时返回null 我将上下文传递给LastNewsRVAdapter java作为一个论点 但LayoutInflater from context 有时会崩溃 我在 Play 控制台上收到一些崩溃报告 以下是
  • 当通过innerHTML 添加元素时,为什么我的动画会“重播”?

    我有一个小脚本 使用以下命令添加一个名为 doge 的 divinnerHTML当单击我的页面上的按钮时 此页面上有一个带有 CSS 关键帧动画的 div 但是 当我单击按钮在页面上添加名为 doge 的 div 时 CSS 动画会 重播
  • 根据选择值显示和隐藏内容

    我有一个这个 Html 代码
  • IIS 8 和 Plesk web.config 以启用父路径和错误报告

    我正在将一个经典的 ASP 站点从共享托管 IIS 6 站点移动到使用 Plesk 的共享 IIS 8 主机 因此对 IIS 的唯一控制是通过 Plesk 中的一些设置或 web config Plesk 有启用 ASP 支持 我已经完成
  • Firebase 撤销下载网址上的令牌

    当我简单地在 firebase 控制台上 拍摄 图像时 它会自动为我创建一个下载网址 例如 我想让我的文件超级安全 如何删除此下载网址或撤销此令牌 Firebase 控制台在下载 URL 旁边提供了一个 撤销 选项 可用于此目的 在 文件位
  • 每次启动 Google Colab 时都需要安装所需的软件包吗?

    我正在将 Google colab 用于我的一个项目 我有一个完美运行笔记本所需的软件包列表 那么 我是否应该在每次启动 colab 时安装所有软件包 还是只安装一次就可以永远使用它们 您每次都需要安装它 来自FAQ https resea
  • 使用 popToViewController:animated 选择视图控制器的更好方法:

    考虑 self navigationController popToViewController self navigationController viewControllers objectAtIndex 1 animated YES
  • Pyodbc:插入时 SQLExecDirectW 错误

    由于某种原因 我使用以下方法将以下数组完全存储在 SQL 服务器中pyodbc以带有单引号的文本形式 萨钦 尤拉吉 我使用下面的代码插入上面的值 tes table SQLCURSOR execute INSERT INTO Test Ta
  • SDL2 如何在第二台显示器上定位窗口?

    我在用SDL SetWindowPosition定位我的窗口 我可以使用此功能将窗口定位到另一台显示器上吗 UPDATE Using SDL GetDisplayBounds在 Windows 10 中更改文本大小时 不会返回正确的显示器位