【问题标题】:xlib get icon data to draw on a windowxlib 获取图标数据以在窗口上绘制
【发布时间】:2015-12-27 18:20:41
【问题描述】:

对于我的程序,我需要其他程序图标,我已将其保存在列表中:

Window *windowlist(Display *display, unsigned long *length)
{
    Atom prop = XInternAtom(display, "_NET_CLIENT_LIST", False);
    Atom type;
    int form;
    unsigned long remain;
    unsigned char *list;

    if(XGetWindowProperty(display, XDefaultRootWindow(display), prop, 0, 1024, False, XA_WINDOW, &type, &form, length, &remain, &list) != Success)
    {
        return 0;
    }

    return (Window*)list;
}

我只能使用 Imlib2 找到解决方案,但如果可能的话,我正在寻找一种更简单的方法。基本上我只想在窗口上绘制这些图标。

Atom prop = XInternAtom(display, "_NET_WM_ICON", False);
XGetWindowProperty(display, window, prop, 0, 1 or what i need to do here?, False, XA_CARDINAl, &actual_type_return, &actual_format_return, &nitems_return, &bytes_after_return, &data);
width = (int)data; 
height = (int)data;
size = width * height;
XGetWindowProperty(display, window, prop, 2 ???, size, False, XA_CARDINAl, &actual_type_return, &actual_format_return, &nitems_return, &bytes_after_return, &data);
Pixmap = ....

我真的不知道该怎么办。有人有如何获取正确数据或如何使用它的示例(例如,对于像素图)? 谢谢!

编辑: 现在我有了 XWMHints 的另一个解决方案(它在 libwnck 的源代码中):

Pixmap icon;
int width, height;
XWMHints *hints;
hints = XGetWMHints(display, window);
if(hints)
{
  if(hints->flags & IconPixmapHint)
     icon = hints->icon_pixmap;
  if(icon != 0)
  {
     get_pixmap_geometry(icon, &width, &height) //its just XGetGeometry stuff
     XCopyArea(display, icon, drawable, gc, 0, 0, width, height 0, 0);
  }
}

类似的东西。

【问题讨论】:

    标签: c linux x11 xlib


    【解决方案1】:

    使用这个

    gulong i=0;
        int result;
        Atom type;
        int format;
        gulong bytes_after;
        gulong *data;
        gulong nitems;
    
    
    XGetWindowProperty (display,
              w,
            prop,
            0, G_MAXLONG,
            False, XA_CARDINAL , &type, &format, &nitems,
            &bytes_after, ((guchar **)&data));
    

    【讨论】:

      猜你喜欢
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2011-04-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多