⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extended.c

📁 //建立顶级窗口 toplevel = XtVaAppInitialize[&app, "List", NULL, 0, &argc, argv, NULL, NULL] /
💻 C
字号:
	/* File: extended.c */	//runit XENVIRONMENT=Extended.ad ./extended	#include <locale.h>	#include <Xm/Xm.h>	#include <Xm/List.h>	#include <Xm/PushB.h>	#include <Xm/Separator.h>	#include <Xm/RowColumn.h>	char *months[] = {		"January(一月)", "Febrary(二月)", "March(三月)", "April(四月)",		"May(五月)", "June(六月)", "July(七月)","August(八月)", 		"September(九月)", "October(十月)", "November(十一月)", 		"December(十二月)"	};	void callback(Widget w, XtPointer client_data,		XmListCallbackStruct *cbs)	{		int i;		char *string;		printf("\nreason: %d\n", cbs->reason);		if(cbs->reason == XmCR_EXTENDED_SELECT){			printf("items selected:%d\n", cbs->selected_item_count);			for(i=0; i<cbs->selected_item_count; i++){				XmStringGetLtoR(cbs->selected_items[i],					"", &string);				printf("item %d:%s\n", 					cbs->selected_item_positions[i],string);				XtFree(string);			}		} else {			XmStringGetLtoR(cbs->item, "", &string);			printf("item %d:%s\n", cbs->item_position, string);			XtFree(string);		}	}	void checkit(Widget w,  Widget list,		XmAnyCallbackStruct *cbs)	{		int i, count;		XmStringTable selection;		char *string;		XtVaGetValues(list,			XmNselectedItemCount,	&count,			XmNselectedItems,	&selection,			NULL);		printf("\nselection result:\n");		for(i = 0; i < count; i++){			XmStringGetLtoR(selection[i], "", &string);			printf("item %s selected.\n", string);			XtFree(string);		}	}	int main(int argc, char *argv[])	{		int i, n;		Arg args[10];		XtAppContext app;		Widget toplevel, rowcol, list, sep, button;		XmString str_months[12];		setlocale(LC_ALL, "");		//建立顶级窗口		toplevel = XtVaAppInitialize(&app, "Extended", NULL, 0,			&argc, argv, NULL, NULL);		//建立rowcolumn 布局		n = 0;		XtSetArg(args[n], XmNpacking, XmPACK_TIGHT);   n++;		rowcol = XmCreateRowColumn(toplevel, "rowcol", args, n);		XtManageChild(rowcol);		//建立列表上的复合字符串		for(i=0; i<12; i++)			str_months[i] = XmStringCreateSimple(months[i]);		//建立列表		n = 0;		XtSetArg(args[n], XmNitems, str_months); 	n++;		XtSetArg(args[n], XmNitemCount, 12);	 	n++;		XtSetArg(args[n], XmNvisibleItemCount, 8); 	n++;		XtSetArg(args[n], XmNscrollBarDisplayPolicy, XmSTATIC);n++;		XtSetArg(args[n], XmNlistSizePolicy, XmCONSTANT);n++;		XtSetArg(args[n], XmNselectionPolicy, XmEXTENDED_SELECT);n++;		list = XmCreateScrolledList(rowcol, "list", args, n);		XtManageChild(list);		//建立回调		XtAddCallback(list, XmNextendedSelectionCallback, 			(XtCallbackProc)callback, NULL);		XtAddCallback(list, XmNdefaultActionCallback,			(XtCallbackProc)callback, NULL);		for(i=0; i<12; i++)			XmStringFree(str_months[i]);		//建立分隔符		sep = XmCreateSeparator(rowcol, "separator", NULL, 0);		XtManageChild(sep);		//建立一个普通按钮		button = XmCreatePushButton(rowcol, "打印列表选择", NULL, 0);		XtManageChild(button);		XtAddCallback(button, XmNactivateCallback,			(XtCallbackProc)checkit, list);		//显示窗口		XtRealizeWidget(toplevel);		//进入事件循环		XtAppMainLoop(app);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -