|
小技巧:创建无边界窗口
作 者: 于明俭
无边界窗口指的是不受窗口管理器管理的窗口, 需要在
创建窗口时指定属性. 下面介绍在各种情况下创建无边
界窗口的技巧.
Xlib
Window win;
XSetWindowAttributes attrib;
unsigned long attribmask;
Visual *visual;
attrib.override_redirect = True;
attribmask = CWOverrideRedirect;
screen_num = DefaultScreen(display);
screen_ptr = DefaultScreenOfDisplay(display);
visual = DefaultVisual(display, screen_num);
/* create noborder window */
win = XCreateWindow(display, RootWindow(display, screen_num), x, y,
w, h, 0, DefaultDepth(display, screen_num),
InputOutput, visual, attribmask, &attrib);
Motif
Widget toplevel = XtVaAppInitialize(&app_context, i
"XApp", NULL, 0, &argc, argv, fallbacks, NULL, 0);
// set to a no-border window
XtVaSetValues(toplevel,
XmNoverrideRedirect, True,
0);
Gtk
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
Qt
QWidget::QWidget ( QWidget * parent=0, const char * name=0, WFlags f=0 )
f = WStyle_NoBorder;
XForms
FL_FORM *form = ...
Window window = fl_show_form(form,
FL_PLACE_GEOMETRY,FL_NOBORDER,"Win");
Java
class ButtonBar extends Window implements Runnable, ActionListener {
public ButtonBar(Dimension dim) {
super(new Frame("MoveBar"));
....
请参见JButtonBar
|