我正在尝试设置toplevel Motif 2.1窗口的标题。
从O‘’Reilly第六卷A中,我看到在Motif 2.1中,建议使用XtVaOpenApplication来创建顶层小部件。
在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的可选参数更改窗口标题
发布于 2021-07-10 18:23:47
正确的xrm选项行是
{"-title", ".title", XrmoptionSepArg, NULL}您实际上不需要指定它,因为它在默认的Xt选项表中。
通常,在指定xrm资源名称时会省略XmN。
发布于 2021-07-10 17:41:22
请进一步调查自己(我不是X/Motif专家),但有些东西似乎与参数解析无关。在call XtVaOpenApplication调用中用NULL和它的大小替换options似乎做到了这一点:toplevel = XtVaOpenApplication( &app, argv[0], NULL, 0, &argc, argv, NULL, sessionShellWidgetClass, NULL);
https://stackoverflow.com/questions/68325648
复制相似问题