设置主题的标题 Window
Setting the title of a Motif Window
我正在尝试设置顶级 Motif 2.1 的标题 window。
从 O'Reilly 第六卷 A 中,我看到在 Motif 2.1 中建议 XtVaOpenApplication
创建顶级 Widget。
在 this appendix 中可以看到 options
和 XtNumber(options)
是如何通过参数列表作用于资源的。
我曾尝试在调用程序时使用它来生成可选标志 -title WINDOW_TITLE
,但没有成功。
这是我试过的:
#include <stdlib.h>
#include <stdio.h>
#include <Xm/Xm.h>
#include <Xm/PushB.h>
static XrmOptionDescRec options[] = {
{ "-title", "XmNtitle", XrmoptionIsArg, NULL },
};
int main(int argc, char *argv[]) {
Widget toplevel; /* Top Level Button */
XtAppContext app; /* Application Context */
char *window_title = NULL; /* Top Level Window Title */
/* INITIALIZE TOP LEVEL WINDOW */
XtSetLanguageProc(NULL, NULL, NULL);
toplevel = XtVaOpenApplication( &app, argv[0], options, XtNumber(options), &argc, argv, NULL, sessionShellWidgetClass, NULL);
/* REALIZE TOPLEVEL WINDOW AND LAUNCH APPLICATION LOOP */
XtRealizeWidget(toplevel);
XtAppMainLoop(app);
return 0;
}
程序编译但不响应 -title MYTITLE
命令行参数。
这是 makefile
(适用于 FreeBSD 12):
test: test.o
cc -L/usr/local/lib -O -o test test.o -lXm -lXt -lX11
test.o: test.c
cc -I/usr/local/include -c test.c
如何根据名为 -title
的可选参数更改 window 的标题?
请自己进一步调查(我不是 X/Motif 专家),但参数解析似乎不对劲。
在调用 XtVaOpenApplication
调用中用 NULL 蚂蚁替换其大小为 0 的选项似乎可以解决问题:
toplevel = XtVaOpenApplication( &app, argv[0], NULL, 0, &argc, argv, NULL, sessionShellWidgetClass, NULL);
正确的 xrm 选项行是
{"-title", ".title", XrmoptionSepArg, NULL}
您实际上不需要指定它,因为它在默认的 Xt 选项中 table。
通常在指定 xrm 资源名称时省略 XmN
。
我正在尝试设置顶级 Motif 2.1 的标题 window。
从 O'Reilly 第六卷 A 中,我看到在 Motif 2.1 中建议 XtVaOpenApplication
创建顶级 Widget。
在 this appendix 中可以看到 options
和 XtNumber(options)
是如何通过参数列表作用于资源的。
我曾尝试在调用程序时使用它来生成可选标志 -title WINDOW_TITLE
,但没有成功。
这是我试过的:
#include <stdlib.h>
#include <stdio.h>
#include <Xm/Xm.h>
#include <Xm/PushB.h>
static XrmOptionDescRec options[] = {
{ "-title", "XmNtitle", XrmoptionIsArg, NULL },
};
int main(int argc, char *argv[]) {
Widget toplevel; /* Top Level Button */
XtAppContext app; /* Application Context */
char *window_title = NULL; /* Top Level Window Title */
/* INITIALIZE TOP LEVEL WINDOW */
XtSetLanguageProc(NULL, NULL, NULL);
toplevel = XtVaOpenApplication( &app, argv[0], options, XtNumber(options), &argc, argv, NULL, sessionShellWidgetClass, NULL);
/* REALIZE TOPLEVEL WINDOW AND LAUNCH APPLICATION LOOP */
XtRealizeWidget(toplevel);
XtAppMainLoop(app);
return 0;
}
程序编译但不响应 -title MYTITLE
命令行参数。
这是 makefile
(适用于 FreeBSD 12):
test: test.o
cc -L/usr/local/lib -O -o test test.o -lXm -lXt -lX11
test.o: test.c
cc -I/usr/local/include -c test.c
如何根据名为 -title
的可选参数更改 window 的标题?
请自己进一步调查(我不是 X/Motif 专家),但参数解析似乎不对劲。
在调用 XtVaOpenApplication
调用中用 NULL 蚂蚁替换其大小为 0 的选项似乎可以解决问题:
toplevel = XtVaOpenApplication( &app, argv[0], NULL, 0, &argc, argv, NULL, sessionShellWidgetClass, NULL);
正确的 xrm 选项行是
{"-title", ".title", XrmoptionSepArg, NULL}
您实际上不需要指定它,因为它在默认的 Xt 选项中 table。
通常在指定 xrm 资源名称时省略 XmN
。