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

📄 nxlsclients.c

📁 Microwindows genesis was with the NanoGUI project, and is now the primary distribution for both th
💻 C
字号:
/* * Copyright (C) 2000 by VTech Informations LTD. * This program is released under MPL. * * Vladimir Cotfas <vladimircotfas@vtech.ca> Oct 25, 2000 */#include <stdio.h>#include <stdlib.h>#define MWINCLUDECOLORS#include "nano-X.h"#include "windef.h"/* which is the maximim window id?!?!*/#define LIMIT	10000struct _colour {	unsigned long colour;	char* name;};typedef struct _colour COLOURS;static COLOURS colour_table[] = {	{ BLACK, "Black" },	{ BLUE, "Blue" },	{ GREEN, "Green"},	{ CYAN, "Cyan" },	{ RED, "Red" },	{ MAGENTA, "Magenta" },	{ BROWN, "Brown" },	{ LTGRAY, "LightGray" },	{ GRAY, "Gray" },	{ DKGRAY, "DarkGray" },	{ LTBLUE, "LightBlue" },	{ LTGREEN, "LightGreen" },	{ LTCYAN, "LightCyan" },	{ LTRED, "LightRed" },	{ LTMAGENTA, "LightMagenta" },	{ YELLOW, "Yellow" },	{ WHITE, "White" }};#define NR_COLOURS	(sizeof(colour_table) / sizeof(colour_table[0]))char*lookupColour(unsigned long c){	int i;	for (i = 0; i < NR_COLOURS; i++)		if (c == colour_table[i].colour)			return colour_table[i].name;	return "UanbleToComply";}struct _xlat {        unsigned event_type;        char* event_desc;};typedef struct _xlat XLAT;static XLAT event_table[] = {        { GR_EVENT_TYPE_ERROR,          "GR_EVENT_MASK_ERROR"           },/*      { GR_EVENT_TYPE_NONE,           "GR_EVENT_MASK_NONE"            }, */        { GR_EVENT_TYPE_EXPOSURE,       "GR_EVENT_MASK_EXPOSURE"        },        { GR_EVENT_TYPE_BUTTON_DOWN,    "GR_EVENT_MASK_BUTTON_DOWN"     },        { GR_EVENT_TYPE_BUTTON_UP,      "GR_EVENT_MASK_BUTTON_UP"       },        { GR_EVENT_TYPE_MOUSE_ENTER,    "GR_EVENT_MASK_MOUSE_ENTER"     },        { GR_EVENT_TYPE_MOUSE_EXIT,     "GR_EVENT_MASK_MOUSE_EXIT"      },        { GR_EVENT_TYPE_MOUSE_MOTION,   "GR_EVENT_MASK_MOUSE_MOTION"    },        { GR_EVENT_TYPE_MOUSE_POSITION, "GR_EVENT_MASK_MOUSE_POSITION"  },        { GR_EVENT_TYPE_KEY_DOWN,       "GR_EVENT_MASK_KEY_DOWN"        },        { GR_EVENT_TYPE_KEY_UP,         "GR_EVENT_MASK_KEY_UP"          },        { GR_EVENT_TYPE_FOCUS_IN,       "GR_EVENT_MASK_FOCUS_IN"        },        { GR_EVENT_TYPE_FOCUS_OUT,      "GR_EVENT_MASK_FOCUS_OUT"       },        { GR_EVENT_TYPE_FDINPUT,        "GR_EVENT_MASK_FDINPUT"         },        { GR_EVENT_TYPE_UPDATE,         "GR_EVENT_MASK_UPDATE"          },        { GR_EVENT_TYPE_CHLD_UPDATE,    "GR_EVENT_MASK_CHLD_UPDATE"     },        { GR_EVENT_TYPE_CLOSE_REQ,      "GR_EVENT_MASK_CLOSE_REQ"       }};#define NR_MASKS        (sizeof(event_table) / sizeof(event_table[0]))struct _wm_props {	GR_WM_PROPS prop;	char* prop_symbol;	char* prop_descr;};typedef struct _wm_props WM_PROPS;static WM_PROPS props_table[] = {	/* Window properties */	{ GR_WM_PROPS_NOBACKGROUND, "GR_WM_PROPS_NOBACKGROUND", "Don't draw window background" },	{ GR_WM_PROPS_NOFOCUS, "GR_WM_PROPS_NOFOCUS", "Don't set focus to this window" },	{ GR_WM_PROPS_NOMOVE, "GR_WM_PROPS_NOMOVE", "Don't let user move window" },	{ GR_WM_PROPS_NORAISE, "GR_WM_PROPS_NORAISE", "Don't let user raise window" },	{ GR_WM_PROPS_NODECORATE, "GR_WM_PROPS_NODECORATE", "Don't redecorate window" },	{ GR_WM_PROPS_NOAUTOMOVE, "GR_WM_PROPS_NOAUTOMOVE", "Don't move window on decorating" },	/* default decoration style */	{ GR_WM_PROPS_APPWINDOW, "GR_WM_PROPS_APPWINDOW", "Leave appearance to WM" },	{ GR_WM_PROPS_APPMASK, "GR_WM_PROPS_APPMASK", "Appearance mask" },	{ GR_WM_PROPS_BORDER, "GR_WM_PROPS_BORDER", "Single line border" },	{ GR_WM_PROPS_APPFRAME, "GR_WM_PROPS_APPFRAME", "3D app frame" },	{ GR_WM_PROPS_CAPTION, "GR_WM_PROPS_CAPTION", "Title bar" },	{ GR_WM_PROPS_CLOSEBOX, "GR_WM_PROPS_CLOSEBOX", "Close box" },#if 0	{ GR_WM_PROPS_MAXIMIZED, "GR_WM_PROPS_MAXIMIZED", "Application is maximized" }#endif};#define NR_PROPS        (sizeof(props_table) / sizeof(props_table[0]))intmain(int argc, char* argv[]){	GR_WINDOW_ID w;	GR_WINDOW_INFO info;        if (GrOpen() < 0) {                fprintf(stderr, "nxlsclients: cannot open graphics\n");                exit(1);        }	for (w = 0; w < LIMIT; w++) {		info.wid = -1; /* self-sabotaged like CCCP */				GrGetWindowInfo(w, &info);				if (info.wid == -1) {			printf("Query wid = %d, GrGetWindowInfo() is not working!\n", w);			continue;		}		if (info.wid == 0) {#if 0			printf("Query wid = %d --> does not exist\n", w);#endif			continue;		}		printf("Window id = %d\n", info.wid);		printf("\tAbsolute upper-left X: %d\n", info.x);		printf("\tAbsolute upper-left Y: %d\n", info.y);		printf("\tWidth = %d\n", info.width);		printf("\tHeight = %d\n", info.height);		printf("\tBorder: size = %d, colour = %s (#%06lX)\n", \		       info.bordersize,		       lookupColour(info.bordercolor), info.bordercolor);		printf("\tBackground colour = %s (#%06lX)\n", \		       lookupColour(info.background), info.background);		printf("\tParent = %d\n", info.parent);		printf("\tFirst child = %d\n", info.child);		printf("\tNext sibling? = %d\n", info.sibling);		printf("\t%sinput-only, ", (info.inputonly == TRUE)?"": "not ");		printf("%smapped", (info.mapped == TRUE)?"": "not ");		if (info.mapped != TRUE)			printf(", realized = %d", info.realized);		printf("\n");		printf("\tEvent mask (0x%08lX):\n", info.eventmask);		{			int i, n = 0;			GR_EVENT_MASK tmp = info.eventmask;			for (i = 0; i < NR_MASKS; i++) {				GR_EVENT_MASK mask = GR_EVENTMASK(event_table[i].event_type);					if ((tmp  & mask) == mask) {					printf("\t\t%s\n", event_table[i].event_desc);					n++;				}			}			if (!n)				printf("\t\tGR_EVENT_MASK_NONE (?!?!?)\n");		}		/* We don't use info.props, use GrGetWMProperties() intead */		printf("\tWM Properties:\n");		{			GR_WM_PROPERTIES wm_props;			GrGetWMProperties(w, &wm_props);						printf("\t\tTitle: ");				if ((wm_props.flags & GR_WM_FLAGS_TITLE ) == GR_WM_FLAGS_TITLE) 				printf("'%s'\n", (char*)wm_props.title ?						(char *)wm_props.title : "(null)");			else				printf("<untitled>\n");			if (wm_props.title)				free(wm_props.title);			printf("\t\tBackground colour: ");			if ((wm_props.flags & GR_WM_FLAGS_BACKGROUND) == GR_WM_FLAGS_BACKGROUND)				printf("%s (#%06lX)\n", lookupColour(wm_props.background), 				       wm_props.background);			else				printf("<unspecified>\n");			printf("\t\tBorder size: ");			if ((wm_props.flags & GR_WM_FLAGS_BORDERSIZE) == GR_WM_FLAGS_BORDERSIZE)				printf("%d\n", wm_props.bordersize);			else				printf("<unspecified>\n");			printf("\t\tProperty bits (0x%08lX):\n", wm_props.props);			{				int i, n = 0;				for (i = 0; i < NR_PROPS; i++) {					GR_WM_PROPS prop = props_table[i].prop;					if ((wm_props.props & prop) == prop) {						printf("\t\t\t%s (%s)\n", \								props_table[i].prop_symbol, \								props_table[i].prop_descr);						n++;					}				}				if (!n)				       	printf("\t\tNONE (?!?!?)\n");			}		}	}	GrClose();	return 0; }

⌨️ 快捷键说明

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