C Xlib:调整包含pixmap的窗口大小
与……相关。C Xlib:调整包含pixmap的窗口大小,c,linux,xlib,dwm,C,Linux,Xlib,Dwm,与……相关。 正如上面提到的主题所总结的,不可能调整pixmap的大小。在pixmap被复制到窗口之后,窗口会怎么样?在下面的示例中,在调整窗口大小之前,一切都很好。图标在复制到窗口后绘制,但在调整窗口大小后丢失。我是否遗漏了一些东西,或者根本没有办法调整pixmap内容的大小? 上下文:尝试将客户端图标添加到的选项卡中 unsigned int px_w, px_h, dummy_i; Window icon_w, dummy_w; Pixmap getWindowIcon (Window
正如上面提到的主题所总结的,不可能调整pixmap的大小。在pixmap被复制到窗口之后,窗口会怎么样?在下面的示例中,在调整窗口大小之前,一切都很好。图标在复制到窗口后绘制,但在调整窗口大小后丢失。我是否遗漏了一些东西,或者根本没有办法调整pixmap内容的大小?
上下文:尝试将客户端图标添加到的选项卡中
unsigned int px_w, px_h, dummy_i;
Window icon_w, dummy_w;
Pixmap getWindowIcon (Window *w) {
XWMHints *wmh;
Pixmap pxmp = NULL;
if(wmh = XGetWMHints(dpy, w)) {
pxmp = wmh->icon_pixmap;
XFree(wmh);
}
return pxmp;
}
Pixmap client_icon = getWindowIcon(current_window); // current_window is already existing Window instance
// find the pixmap dimensions and store in px_w, px_h:
XGetGeometry(dpy, client_icon, &dummy_w, &dummy_i, &dummy_i, &px_w, &px_h, &dummy_i, &dummy_i );
icon_w = XCreateSimpleWindow(dpy, root_window, 0, 0, px_w, px_h, 0, 0, color);
XMapRaised(dpy, icon_w);
// copy pixmap to the newly created win:
XCopyArea(dpy, client_icon, icon_w, cellDC.gc, 0, 0, px_w, px_h, 0, 0);
// resize - after which the pixmap is lost in the window:
XResizeWindow(dpy, icon_w, px_w+1, px_h+1);