libXm 从小部件获取显示编号

libXm get display number from widget

我正在使用 libXm4.0.3。我想从小部件中获取小部件正在显示的显示编号。

直接转到 xlib 会导致段错误。 Xt 似乎也有段错误。

我开始使用一些 XmGetXmDisplay 或 XmGetXmScreen 函数,但我看到 "Could not find per display information" 并且我不知道如何克服这个问题。

如何从 libXm 小部件获取当前显示编号?

这是我当前的代码:

int get_disp_num_from_widget(Widget w) {
    Screen* xs = w->core.screen; //Xlib screen
    if (xs) {
        Display* xd = w->core.screen->display; //Xlib display
        if (xd) {
            XmDisplay d = XmGetXmDisplay(xd); // causes "Couldn't find per display information"
            if (d) {
                char* string = d->display.bindingsString;
                if (string) {
                    printf("Display binding string: %s", string);
                }
            }
        }
    }
    return -1;
}

您可以使用 XtDisplay(Widget *) 函数获取任何小部件的 Display *。