如何使用本机widows api移动Gtk::窗口? 背景 我在用GTKMM 4开发C++中的一个应用程序。我正在创建一个Gtk::窗口。现在我想把这个窗口移到屏幕中央。在Gtkmm 3中有一些方法,如Gtk::Window::set_position和Gtk::Window::move,但在Gtkmm 4中它们被删除了。我已经解决了如何从Gdk::Display获取屏幕大小,并计算位置。 但是,我必须使用特定于平台的API来移动窗口。在Linux上,有X11和Wayland,我知道如何使用它们 问题:

如何使用本机widows api移动Gtk::窗口? 背景 我在用GTKMM 4开发C++中的一个应用程序。我正在创建一个Gtk::窗口。现在我想把这个窗口移到屏幕中央。在Gtkmm 3中有一些方法,如Gtk::Window::set_position和Gtk::Window::move,但在Gtkmm 4中它们被删除了。我已经解决了如何从Gdk::Display获取屏幕大小,并计算位置。 但是,我必须使用特定于平台的API来移动窗口。在Linux上,有X11和Wayland,我知道如何使用它们 问题:,c++,windows,winapi,gtk,gtkmm,C++,Windows,Winapi,Gtk,Gtkmm,如何使用本机windows API将Gtk::Window移动到屏幕上的特定位置?根据: GDK将GDK\u win32\u window\u get\u handle()导出为公共符号,但其 声明在公共标头中不可用,因此您必须 自己定义它: HGDIOBJ gdk_win32_window_get_handle(GdkWindow*window) 似乎还有一个标题可用,这使得宏GDK_WINDOW\u HWND可以简化一些事情。提供了一个示例。有一个很好的理由不以编程方式移动窗口,这可能是se

如何使用本机windows API将
Gtk::Window
移动到屏幕上的特定位置?

根据:

GDK将
GDK\u win32\u window\u get\u handle()
导出为公共符号,但其 声明在公共标头中不可用,因此您必须 自己定义它:

HGDIOBJ gdk_win32_window_get_handle(GdkWindow*window)


似乎还有一个
标题可用,这使得宏
GDK_WINDOW\u HWND
可以简化一些事情。提供了一个示例。

有一个很好的理由不以编程方式移动窗口,这可能是
set\u position
move
被删除的原因。你有没有想过有多个屏幕的用户?那么平铺窗口管理器呢?如果您确实确定要编写错误的代码,可以使用WinAPI的
SetWindowPos
函数。@YakovGalka SetWindowPos将窗口句柄(HWND)作为第一个参数。如何将Gtk::Window转换为windows窗口句柄?@frederic确实有帮助?@BobMorane是的,谢谢,这正是我搜索的!如果你用它来回答,我会接受它。@BobMorane我发现我自己已经知道了:因为我在Linux上,这个标题已经下载了,但当然没有安装!请用你的研究做一个回答,这样我就可以接受了