如何用原生窗口 api 移动 Gtk::Window?
How to move a Gtk::Window with native widows api?
背景
我正在使用 Gtkmm 4 在 C++ 中开发一个应用程序。我正在创建一个 Gtk::Window。现在我想把这个 window 移到屏幕中央。在Gtkmm 3中有Gtk::Window::set_position
和Gtk::Window::move
等方法,但在Gtkmm 4中被删除了。我已经弄清楚如何从Gdk::Display
获取屏幕尺寸,并计算位置.
但是,我必须使用特定于平台的 API 来移动我的 window。在 Linux 上,有 X11 和 Wayland,我知道如何使用它们。
问题
如何使用原生 windows API 将 Gtk::Window
移动到屏幕上的特定位置?
根据this source:
GDK exports gdk_win32_window_get_handle()
as a public symbol—but its
declaration is not available in a public header, so you’ll have to
define it yourself:
HGDIOBJ gdk_win32_window_get_handle (GdkWindow *window);
似乎 <gdk/gdkwin32.h>
header 也可用,这使得宏 GDK_WINDOW_HWND
可用于简化操作。提供了一个例子 here.
背景
我正在使用 Gtkmm 4 在 C++ 中开发一个应用程序。我正在创建一个 Gtk::Window。现在我想把这个 window 移到屏幕中央。在Gtkmm 3中有Gtk::Window::set_position
和Gtk::Window::move
等方法,但在Gtkmm 4中被删除了。我已经弄清楚如何从Gdk::Display
获取屏幕尺寸,并计算位置.
但是,我必须使用特定于平台的 API 来移动我的 window。在 Linux 上,有 X11 和 Wayland,我知道如何使用它们。
问题
如何使用原生 windows API 将 Gtk::Window
移动到屏幕上的特定位置?
根据this source:
GDK exports
gdk_win32_window_get_handle()
as a public symbol—but its declaration is not available in a public header, so you’ll have to define it yourself:
HGDIOBJ gdk_win32_window_get_handle (GdkWindow *window);
似乎 <gdk/gdkwin32.h>
header 也可用,这使得宏 GDK_WINDOW_HWND
可用于简化操作。提供了一个例子 here.