相关疑难解决方法(0)

GtkWindow和GdkWindow之间的区别?

在我的Gtk-Gdk-Cairo-Pango应用程序的开头,我创建了窗口:

GtkWidget   *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
Run Code Online (Sandbox Code Playgroud)

首先,有GtkWindow,但gtk_create_window返回GtkWidget,不是GtkWindow,为什么?

然后,一些功能,如gdk_window_process_updates(..)要求GdkWindow*.

gtk_window_set_geometry_hints()另一方面要求GtkWindow*.

在文档中也GdkWindow* gdk_window_new()有返回GdkWindow.

当然有文件说:

GdkWindow是屏幕上的矩形区域.它是一个低级对象,用于在GTK +级别实现高级对象,如GtkWidget和GtkWindow.GtkWindow是一个顶层窗口,用户可能会认为它是一个带有标题栏的"窗口"等等; 一个GtkWindow可能包含许多GdkWindow.

但它仍然没有告诉我,何时以及为什么我应该创建Gtk或Gdk窗口?这里的模式是什么?

现在你问,我想解决什么特别的问题?当然,我尝试在gtk + gdk之上使用cairo + pango在鼠标移动后立即绘制文本.问题是虽然实际绘图似乎表现得很快,但我无法像鼠标移动那样完成它.在我motion_notify_event刚刚调用的gtk_widget_queue_draw(GtkWidget)时候,实际鼠标在屏幕上移动有明显的滞后,即使我绘制单个字符,它在移动阶段也没有与鼠标指针对齐,只在鼠标停止后捕获它.

我尝试的是通过调用加速更新gdk_window_process_updates(GDK_WINDOW(window), false);,编译器吃它,但我得到了运行时断言:Gdk-CRITICAL **: gdk_window_process_updates: assertion 'GDK_IS_WINDOW (window)' failed.我找不到有关此宏的任何信息以及如何/何时使用它.

包括

#include <gtk/gtk.h>
#define TXT "1234567890"
int X = 0, Y = 0;
static void do_drawing(cairo_t *);
GtkWidget *window; …
Run Code Online (Sandbox Code Playgroud)

gtk pango cairo gdk pangocairo

11
推荐指数
1
解决办法
4727
查看次数

如何在没有图形库的情况下与C中的X服务器通信?

如果我想编写一个C程序与Linux上的X服务器通信并产生最简单的可视化结果,例如在显示器上设置一个像素,我该怎么做?

我想尽可能少地使用库,从头开始理解它,无论代码多么低效/混乱.

更新 - 通过"没有库",我的意思是基本上没有任何可用于X的辅助库,也没有图形工具包.

更新 - 答案是"通过unix socket",特别是/tmp/.X11-unix/X0(至少在这台机器上,大概是显示0).实际上绘制一个像素太复杂了,我想在这里得不到答案.

c linux xserver

2
推荐指数
1
解决办法
1130
查看次数

xlib阻止关闭按钮退出应用程序

是否可以通过单击关闭按钮来阻止应用程序退出?以下代码仅隐藏最小化和最大化按钮但不隐藏按钮...

Atom window_type = XInternAtom(display, "_NET_WM_WINDOW_TYPE", False);
long value = XInternAtom(display, "_NET_WM_WINDOW_TYPE_TOOLBAR", False);
XChangeProperty(display, window, window_type, XA_ATOM, 32, PropModeReplace, (unsigned char *) &value,1 );
Run Code Online (Sandbox Code Playgroud)

我试图通过谷歌搜索覆盖_NET_CLOSE_WINDOW,但无法真正找到一个......或者从xprop中删除_NET_WM_ACTION_CLOSE ...

c c++ xlib

0
推荐指数
1
解决办法
143
查看次数

标签 统计

c ×2

c++ ×1

cairo ×1

gdk ×1

gtk ×1

linux ×1

pango ×1

pangocairo ×1

xlib ×1

xserver ×1