根据提供的代码片段,错误出现在 gdk_window_move_resize()
函数调用处。错误信息指出 ‘GtkWidget’ 结构体没有名为 ‘window’ 的成员。
要解决此问题,可以使用 gtk_widget_get_window()
函数来获取窗口对象的 GdkWindow,并将其作为参数传递给 gdk_window_move_resize()
函数。
下面是修改后的代码:
static gint motion_notify_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
{
gint x, y;
GtkWidget *window = (GtkWidget *)data;
gtk_window_get_position(GTK_WINDOW(window), &x, &y); // 取窗体绝对坐标
GdkWindow *gdk_win = gtk_widget_get_window(widget);
gdk_window_move_resize(gdk_win, x, y, 100, 80);
if (drag)
{
gtk_window_move(GTK_WINDOW(window), x + event->x - nX, y + event->y - nY); // 移动窗体
g_print("x=%d;y=%d\n", x, y);
}
return TRUE;
}
请注意,我在代码中添加了一行来获取窗口的 GdkWindow 对象并将其命名为 gdk_win
。然后,我将该对象传递给 gdk_window_move_resize()
函数。
这样应该能够修复你遇到的问题。如果还有其他问题,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问