【发布时间】:2021-09-20 08:06:53
【问题描述】:
我正在尝试设置顶层 Motif 2.1 窗口的标题。
从 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 的可选参数更改窗口标题?
【问题讨论】:
-
我不知道,但我认为这 解析 仅命令行。要设置标题,您还必须对解析的值进行操作。
-
AFAIK
-title是标准 x 工具包命令行选项之一,由XtVaOpenApplication自动处理。您不需要在XrmOptionDescRec中指定它。 -
是的,我没有意识到这一点。