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

📄 popup.c

📁 《Linux程序设计权威指南》源代码
💻 C
字号:
	/* File: popup.c */	//Runit: XENVIRONMENT=Popup.ad ./popup	#include <locale.h>	#include <Xm/Xm.h>	#include <Xm/RowColumn.h>	#include <Xm/PushB.h>	#include <Xm/Separator.h>	#include <Xm/DrawingA.h>	void callback(Widget w, char *command, 		XmAnyCallbackStruct *cbs)	{		printf("%s\n", command);	}	void popup(Widget w, Widget menu, 		XmDrawingAreaCallbackStruct *cbs)	{		if(cbs->event->xany.type != ButtonPress ||		   cbs->event->xbutton.button != Button3)			return;		XmMenuPosition(menu, (XButtonPressedEvent *)cbs->event);		XtManageChild(menu);	}	Widget make_menu_item(Widget menu, char *label, char mnemonic, 		char *command)	{		int n;		Arg args[10];		XmString str;		Widget button;		str = XmStringCreateSimple(label);		n = 0;		XtSetArg(args[n], XmNlabelString, str);		n++;		XtSetArg(args[n], XmNmnemonic, mnemonic);	n++;		button = XmCreatePushButton(menu, label, args, n);		XtManageChild(button);		XtAddCallback(button, XmNactivateCallback,			(XtCallbackProc) callback, command);		return button;	}	void make_menu_item_separator(Widget menu)	{		Widget sep;		sep = XmCreateSeparator(menu, "sep", NULL, 0);		XtManageChild(sep);	}	int main(int argc, char *argv[])	{		int i, n;		Arg args[10];		XtAppContext app;		Widget toplevel, drawarea, w;		Widget filemenu;		setlocale(LC_ALL, "");		//建立顶级窗口		toplevel = XtVaAppInitialize(&app, "Popup", NULL, 0,			&argc, argv, NULL, NULL);		//建立绘图区域		n = 0;		XtSetArg(args[n], XmNwidth, 320);	n++;		XtSetArg(args[n], XmNheight, 320);	n++;		drawarea = XmCreateDrawingArea(toplevel, "drawarea", args, n);		XtManageChild(drawarea);				//建立文件菜单		filemenu = XmCreatePopupMenu(drawarea, "文件", NULL, 0);		make_menu_item(filemenu, "新建(N)", 'N', "Create New File");		make_menu_item(filemenu, "打开(O)", 'O', "Open File");		make_menu_item(filemenu, "保存(S)", 'S', "Save File");		make_menu_item_separator(filemenu);		make_menu_item(filemenu, "退出(Q)", 'Q', "Quit Application");		XtAddCallback(drawarea, XmNinputCallback,			(XtCallbackProc) popup, filemenu);		//显示窗口		XtRealizeWidget(toplevel);		//进入事件循环		XtAppMainLoop(app);	}

⌨️ 快捷键说明

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