this object contains all X-specific stuff about a window。
class FL_EXPORT Fl_X {
public:
Window xid;
Window other_xid;
Fl_Window *w;
Fl_Region region;
Fl_X *next;
char wait_for_expose;
char backbuffer_bad; // used for XDBE
static Fl_X* first;
static Fl_X* i(const Fl_Window* wi) {return wi->i;}
void setwindow(Fl_Window* wi) {w=wi; wi->i=this;}
void sendxjunk();
static void make_xid(Fl_Window*,XVisualInfo* =fl_visual, Colormap=fl_colormap);
static Fl_X* set_xid(Fl_Window*, Window);
// kludges to get around protection:
void flush() {w->flush();}
static void x(Fl_Window* wi, int X) {wi->x(X);}
static void y(Fl_Window* wi, int Y) {wi->y(Y);}
};
first 指的是最新的 Fl_X,而 next 是指舊的 Fl_X。
first = C,C->Next = B,B->Next = A,A->Next = NULL。

1. 使用到的類別只有 Fl_Window,所以是單獨給 Fl_Window 用的,而且不同平台有不同的 Fl_X。
friend class Fl_X;
Fl_X *i; // points at the system-specific stuff

2. Fl_Window 在 show() 函數裏透過 Fl_X::make_xid(this); 建立一個 x window 視窗。


台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()