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

📄 tkwinwm.c

📁 linux系统下的音频通信
💻 C
📖 第 1 页 / 共 5 页
字号:
	wmPtr->cmdArgc = cmdArgc;	wmPtr->cmdArgv = cmdArgv;	if (!(wmPtr->flags & WM_NEVER_MAPPED)) {	    XSetCommand(winPtr->display, winPtr->window, cmdArgv, cmdArgc);	}    } else if ((c == 'd') && (strncmp(argv[1], "deiconify", length) == 0)) {	if (argc != 3) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " deiconify window\"", (char *) NULL);	    return TCL_ERROR;	}	if (wmPtr->iconFor != NULL) {	    Tcl_AppendResult(interp, "can't deiconify ", argv[2],		    ": it is an icon for ", winPtr->pathName, (char *) NULL);	    return TCL_ERROR;	}        if (winPtr->flags & TK_EMBEDDED) {            Tcl_AppendResult(interp, "can't deiconify ", winPtr->pathName,                    ": it is an embedded window", (char *) NULL);            return TCL_ERROR;        }	TkpWmSetState(winPtr, NormalState);    } else if ((c == 'f') && (strncmp(argv[1], "focusmodel", length) == 0)	    && (length >= 2)) {	if ((argc != 3) && (argc != 4)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " focusmodel window ?active|passive?\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    interp->result = wmPtr->hints.input ? "passive" : "active";	    return TCL_OK;	}	c = argv[3][0];	length = strlen(argv[3]);	if ((c == 'a') && (strncmp(argv[3], "active", length) == 0)) {	    wmPtr->hints.input = False;	} else if ((c == 'p') && (strncmp(argv[3], "passive", length) == 0)) {	    wmPtr->hints.input = True;	} else {	    Tcl_AppendResult(interp, "bad argument \"", argv[3],		    "\": must be active or passive", (char *) NULL);	    return TCL_ERROR;	}    } else if ((c == 'f') && (strncmp(argv[1], "frame", length) == 0)	    && (length >= 2)) {	HWND hwnd;	if (argc != 3) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " frame window\"", (char *) NULL);	    return TCL_ERROR;	}	if (Tk_WindowId((Tk_Window) winPtr) == None) {	    Tk_MakeWindowExist((Tk_Window) winPtr);	}	hwnd = wmPtr->wrapper;	if (hwnd == NULL) {	    hwnd = Tk_GetHWND(Tk_WindowId((Tk_Window) winPtr));	}	sprintf(interp->result, "0x%x", (unsigned int) hwnd);    } else if ((c == 'g') && (strncmp(argv[1], "geometry", length) == 0)	    && (length >= 2)) {	char xSign, ySign;	int width, height;	if ((argc != 3) && (argc != 4)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " geometry window ?newGeometry?\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    xSign = (wmPtr->flags & WM_NEGATIVE_X) ? '-' : '+';	    ySign = (wmPtr->flags & WM_NEGATIVE_Y) ? '-' : '+';	    if (wmPtr->gridWin != NULL) {		width = wmPtr->reqGridWidth + (winPtr->changes.width			- winPtr->reqWidth)/wmPtr->widthInc;		height = wmPtr->reqGridHeight + (winPtr->changes.height			- winPtr->reqHeight)/wmPtr->heightInc;	    } else {		width = winPtr->changes.width;		height = winPtr->changes.height;	    }	    sprintf(interp->result, "%dx%d%c%d%c%d", width, height,		    xSign, wmPtr->x, ySign, wmPtr->y);	    return TCL_OK;	}	if (*argv[3] == '\0') {	    wmPtr->width = -1;	    wmPtr->height = -1;	    goto updateGeom;	}	return ParseGeometry(interp, argv[3], winPtr);    } else if ((c == 'g') && (strncmp(argv[1], "grid", length) == 0)	    && (length >= 3)) {	int reqWidth, reqHeight, widthInc, heightInc;	if ((argc != 3) && (argc != 7)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " grid window ?baseWidth baseHeight ",		    "widthInc heightInc?\"", (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    if (wmPtr->sizeHintsFlags & PBaseSize) {		sprintf(interp->result, "%d %d %d %d", wmPtr->reqGridWidth,			wmPtr->reqGridHeight, wmPtr->widthInc,			wmPtr->heightInc);	    }	    return TCL_OK;	}	if (*argv[3] == '\0') {	    /*	     * Turn off gridding and reset the width and height	     * to make sense as ungridded numbers.	     */	    wmPtr->sizeHintsFlags &= ~(PBaseSize|PResizeInc);	    if (wmPtr->width != -1) {		wmPtr->width = winPtr->reqWidth + (wmPtr->width			- wmPtr->reqGridWidth)*wmPtr->widthInc;		wmPtr->height = winPtr->reqHeight + (wmPtr->height			- wmPtr->reqGridHeight)*wmPtr->heightInc;	    }	    wmPtr->widthInc = 1;	    wmPtr->heightInc = 1;	} else {	    if ((Tcl_GetInt(interp, argv[3], &reqWidth) != TCL_OK)		    || (Tcl_GetInt(interp, argv[4], &reqHeight) != TCL_OK)		    || (Tcl_GetInt(interp, argv[5], &widthInc) != TCL_OK)		    || (Tcl_GetInt(interp, argv[6], &heightInc) != TCL_OK)) {		return TCL_ERROR;	    }	    if (reqWidth < 0) {		interp->result = "baseWidth can't be < 0";		return TCL_ERROR;	    }	    if (reqHeight < 0) {		interp->result = "baseHeight can't be < 0";		return TCL_ERROR;	    }	    if (widthInc < 0) {		interp->result = "widthInc can't be < 0";		return TCL_ERROR;	    }	    if (heightInc < 0) {		interp->result = "heightInc can't be < 0";		return TCL_ERROR;	    }	    Tk_SetGrid((Tk_Window) winPtr, reqWidth, reqHeight, widthInc,		    heightInc);	}	goto updateGeom;    } else if ((c == 'g') && (strncmp(argv[1], "group", length) == 0)	    && (length >= 3)) {	Tk_Window tkwin2;	if ((argc != 3) && (argc != 4)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " group window ?pathName?\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    if (wmPtr->hints.flags & WindowGroupHint) {		interp->result = wmPtr->leaderName;	    }	    return TCL_OK;	}	if (*argv[3] == '\0') {	    wmPtr->hints.flags &= ~WindowGroupHint;	    if (wmPtr->leaderName != NULL) {		ckfree(wmPtr->leaderName);	    }	    wmPtr->leaderName = NULL;	} else {	    tkwin2 = Tk_NameToWindow(interp, argv[3], tkwin);	    if (tkwin2 == NULL) {		return TCL_ERROR;	    }	    Tk_MakeWindowExist(tkwin2);	    wmPtr->hints.window_group = Tk_WindowId(tkwin2);	    wmPtr->hints.flags |= WindowGroupHint;	    wmPtr->leaderName = ckalloc((unsigned) (strlen(argv[3])+1));	    strcpy(wmPtr->leaderName, argv[3]);	}    } else if ((c == 'i') && (strncmp(argv[1], "iconbitmap", length) == 0)	    && (length >= 5)) {	Pixmap pixmap;	if ((argc != 3) && (argc != 4)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " iconbitmap window ?bitmap?\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    if (wmPtr->hints.flags & IconPixmapHint) {		interp->result = Tk_NameOfBitmap(winPtr->display,			wmPtr->hints.icon_pixmap);	    }	    return TCL_OK;	}	if (*argv[3] == '\0') {	    if (wmPtr->hints.icon_pixmap != None) {		Tk_FreeBitmap(winPtr->display, wmPtr->hints.icon_pixmap);	    }	    wmPtr->hints.flags &= ~IconPixmapHint;	} else {	    pixmap = Tk_GetBitmap(interp, (Tk_Window) winPtr,		    Tk_GetUid(argv[3]));	    if (pixmap == None) {		return TCL_ERROR;	    }	    wmPtr->hints.icon_pixmap = pixmap;	    wmPtr->hints.flags |= IconPixmapHint;	}    } else if ((c == 'i') && (strncmp(argv[1], "iconify", length) == 0)	    && (length >= 5)) {	if (argc != 3) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " iconify window\"", (char *) NULL);	    return TCL_ERROR;	}	if (Tk_Attributes((Tk_Window) winPtr)->override_redirect) {	    Tcl_AppendResult(interp, "can't iconify \"", winPtr->pathName,		    "\": override-redirect flag is set", (char *) NULL);	    return TCL_ERROR;	}	if (wmPtr->masterPtr != NULL) {	    Tcl_AppendResult(interp, "can't iconify \"", winPtr->pathName,		    "\": it is a transient", (char *) NULL);	    return TCL_ERROR;	}	if (wmPtr->iconFor != NULL) {	    Tcl_AppendResult(interp, "can't iconify ", argv[2],		    ": it is an icon for ", winPtr->pathName, (char *) NULL);	    return TCL_ERROR;	}        if (winPtr->flags & TK_EMBEDDED) {            Tcl_AppendResult(interp, "can't iconify ", winPtr->pathName,                    ": it is an embedded window", (char *) NULL);            return TCL_ERROR;        }	TkpWmSetState(winPtr, IconicState);    } else if ((c == 'i') && (strncmp(argv[1], "iconmask", length) == 0)	    && (length >= 5)) {	Pixmap pixmap;	if ((argc != 3) && (argc != 4)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " iconmask window ?bitmap?\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    if (wmPtr->hints.flags & IconMaskHint) {		interp->result = Tk_NameOfBitmap(winPtr->display,			wmPtr->hints.icon_mask);	    }	    return TCL_OK;	}	if (*argv[3] == '\0') {	    if (wmPtr->hints.icon_mask != None) {		Tk_FreeBitmap(winPtr->display, wmPtr->hints.icon_mask);	    }	    wmPtr->hints.flags &= ~IconMaskHint;	} else {	    pixmap = Tk_GetBitmap(interp, tkwin, Tk_GetUid(argv[3]));	    if (pixmap == None) {		return TCL_ERROR;	    }	    wmPtr->hints.icon_mask = pixmap;	    wmPtr->hints.flags |= IconMaskHint;	}    } else if ((c == 'i') && (strncmp(argv[1], "iconname", length) == 0)	    && (length >= 5)) {	if (argc > 4) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " iconname window ?newName?\"", (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    interp->result = (wmPtr->iconName != NULL) ? wmPtr->iconName : "";	    return TCL_OK;	} else {	    wmPtr->iconName = Tk_GetUid(argv[3]);	    if (!(wmPtr->flags & WM_NEVER_MAPPED)) {		XSetIconName(winPtr->display, winPtr->window, wmPtr->iconName);	    }	}    } else if ((c == 'i') && (strncmp(argv[1], "iconposition", length) == 0)	    && (length >= 5)) {	int x, y;	if ((argc != 3) && (argc != 5)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " iconposition window ?x y?\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    if (wmPtr->hints.flags & IconPositionHint) {		sprintf(interp->result, "%d %d", wmPtr->hints.icon_x,			wmPtr->hints.icon_y);	    }	    return TCL_OK;	}	if (*argv[3] == '\0') {	    wmPtr->hints.flags &= ~IconPositionHint;	} else {	    if ((Tcl_GetInt(interp, argv[3], &x) != TCL_OK)		    || (Tcl_GetInt(interp, argv[4], &y) != TCL_OK)){		return TCL_ERROR;	    }	    wmPtr->hints.icon_x = x;	    wmPtr->hints.icon_y = y;	    wmPtr->hints.flags |= IconPositionHint;	}    } else if ((c == 'i') && (strncmp(argv[1], "iconwindow", length) == 0)	    && (length >= 5)) {	Tk_Window tkwin2;	WmInfo *wmPtr2;	XSetWindowAttributes atts;	if ((argc != 3) && (argc != 4)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " iconwindow window ?pathName?\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    if (wmPtr->icon != NULL) {		interp->result = Tk_PathName(wmPtr->icon);	    }	    return TCL_OK;	}	if (*argv[3] == '\0') {	    wmPtr->hints.flags &= ~IconWindowHint;	    if (wmPtr->icon != NULL) {		/*		 * Let the window use button events again, then remove		 * it as icon window.		 */		atts.event_mask = Tk_Attributes(wmPtr->icon)->event_mask			| ButtonPressMask;		Tk_ChangeWindowAttributes(wmPtr->icon, CWEventMask, &atts);		wmPtr2 = ((TkWindow *) wmPtr->icon)->wmInfoPtr;		wmPtr2->iconFor = NULL;		wmPtr2->hints.initial_state = WithdrawnState;	    }	    wmPtr->icon = NULL;	} else {	    tkwin2 = Tk_NameToWindow(interp, argv[3], tkwin);	    if (tkwin2 == NULL) {		return TCL_ERROR;	    }	    if (!Tk_IsTopLevel(tkwin2)) {		Tcl_AppendResult(interp, "can't use ", argv[3],			" as icon window: not at top level", (char *) NULL);		return TCL_ERROR;	    }	    wmPtr2 = ((TkWindow *) tkwin2)->wmInfoPtr;	    if (wmPtr2->iconFor != NULL) {		Tcl_AppendResult(interp, argv[3], " is already an icon for ",			Tk_PathName(wmPtr2->iconFor), (char *) NULL);		return TCL_ERROR;	    }	    if (wmPtr->icon != NULL) {		WmInfo *wmPtr3 = ((TkWindow *) wmPtr->icon)->wmInfoPtr;		wmPtr3->iconFor = NULL;		/*		 * Let the window use button events again.		 */		atts.event_mask = Tk_Attributes(wmPtr->icon)->event_mask			| ButtonPressMask;		Tk_ChangeWindowAttributes(wmPtr->icon, CWEventMask, &atts);	    }	    /*	     * Disable button events in the icon window:  some window	     * managers (like olvwm) want to get the events themselves,	     * but X only allows one application at a time to receive	     * button events for a window.	     */	    atts.event_mask = Tk_Attributes(tkwin2)->event_mask		    & ~ButtonPressMask;	    Tk_ChangeWindowAttributes(tkwin2, CWEventMask, &atts);	    Tk_MakeWindowExist(tkwin2);	    wmPtr->hints.icon_window = Tk_WindowId(tkwin2);	    wmPtr->hints.flags |= IconWindowHint;	    wmPtr->icon = tkwin2;	    wmPtr2->iconFor = (Tk_Window) winPtr;	    if (!(wmPtr2->flags & WM_NEVER_MAPPED)) {		if (XWithdrawWindow(Tk_Display(tkwin2), Tk_WindowId(tkwin2),			Tk_ScreenNumber(tkwin2)) == 0) {		    interp->result =			    "couldn't send withdraw message to window manager";		    return TCL_ERROR;		}	    }	}    } else if ((c == 'm') && (strncmp(argv[1], "maxsize", length) == 0)	    && (length >= 2)) {	int width, height;	if ((argc != 3) && (argc != 5)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " maxsize window ?width height?\"",                    (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    GetMaxSize(wmPtr, &width, &height);	    sprintf(interp->result, "%d %d", width, height);	    return TCL_OK;	}	if ((Tcl_GetInt(interp, argv[3], &width) != TCL_OK)		|| (Tcl_GetInt(interp, argv[4], &height) != TCL_OK)) {	    return TCL_ERROR;	}	wmPtr->maxWidth = width;	wmPtr->maxHeight = height;	goto updateGeom;    } else if ((c == 'm') && (strncmp(argv[1], "minsize", length) == 0)	    && (length >= 2)) {	int width, height;	if ((argc != 3) && (argc != 5)) {	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",		    argv[0], " minsize window ?width height?\"",                    (char *) NULL);	    return TCL_ERROR;	}	if (argc == 3) {	    GetMinSize(wmPtr, &width, &height);	    sprintf(interp->result, "%d %d", width, height);

⌨️ 快捷键说明

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