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

📄 msgsw.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lint#ifdef sccsstatic	char sccsid[] = "@(#)msgsw.c 1.1 92/07/30 Copyr 1983 Sun Micro";#endif#endif/* * Copyright (c) 1983 by Sun Microsystems, Inc. *//* * Implements library routines for the msg subwindow */#include <sys/types.h>#include <sys/time.h>#include <errno.h>#include <pixrect/pixrect.h>#include <pixrect/pr_util.h>#include <pixrect/memvar.h>#include <pixrect/pixfont.h>#include <sunwindow/notify.h>#include <sunwindow/rect.h>#include <sunwindow/rectlist.h>#include <sunwindow/pixwin.h>#include <sunwindow/win_input.h>#include "sunwindow/sv_malloc.h"#include <suntool/msgsw.h>#include <suntool/tool.h>extern	int errno;/*ARGSUSED*/Notify_valuemsgsw_event(msgsw, event, arg, type)	Msgsw *msgsw;	Event *event;	Notify_arg arg;	Notify_event_type type;{	switch (event_id(event)) {	case WIN_REPAINT:		(void)msgsw_display(msgsw);		return(NOTIFY_DONE);	case WIN_RESIZE:		/* Will clear and reformat on up comming WIN_REPAINT */		/* VV Fall thru VV */	default:		return(NOTIFY_IGNORED);	}}Notify_valuemsgsw_destroy(msgsw, status)	Msgsw *msgsw;	Destroy_status status;{	if (status != DESTROY_CHECKING) {		(void)win_unregister((Notify_client)(LINT_CAST(msgsw)));		(void)pw_close(msgsw->msg_pixwin);		free((char *)(LINT_CAST(msgsw)));		return(NOTIFY_DONE);	}	return(NOTIFY_IGNORED);}Msgsw *msgsw_create(tool, name, width, height, string, font)	struct	tool *tool;	char	*name;	short	width, height;	char	*string;	struct	pixfont *font;{	struct	toolsw *toolsw;	Msgsw	*msgsw;	/* Create subwindow */	if ((toolsw = tool_createsubwindow(tool, name, width, height)) ==	    (struct toolsw *)0)		return(MSGSW_NULL);	/* Create msg subwindow */	if ((msgsw = msgsw_init(toolsw->ts_windowfd, string, font)) ==	    (struct msgsubwindow *)0)		return(MSGSW_NULL);	/* Register with window manager */	if (win_register((Notify_client)(LINT_CAST(msgsw)), 		msgsw->msg_pixwin, msgsw_event, msgsw_destroy,	    0))		return(MSGSW_NULL);	/* Tool wouldn't wait for window input if no selected routine */	toolsw->ts_data = (caddr_t) msgsw;	return(msgsw);}struct	msgsubwindow *msgsw_init(windowfd, string, font)	int	windowfd;	char	*string;	struct	pixfont *font;{	struct	msgsubwindow *msgsw;	char *calloc();	msgsw = (struct msgsubwindow *) (LINT_CAST(	    sv_calloc(1, sizeof (struct msgsubwindow))));	msgsw->msg_windowfd = windowfd;	if ((msgsw->msg_pixwin = pw_open_monochrome(windowfd)) ==	    (struct pixwin *)0)		return((struct  msgsubwindow *)0);	msgsw->msg_string = string;	msgsw->msg_font = font;	(void)win_getsize(msgsw->msg_windowfd, &msgsw->msg_rectcache);	return(msgsw);}msgsw_done(msgsw)	struct	msgsubwindow *msgsw;{	(void) msgsw_destroy(msgsw, DESTROY_CLEANUP);}msgsw_handlesigwinch(msgsw)	struct	msgsubwindow *msgsw;{	(void)pw_damaged(msgsw->msg_pixwin);	(void)pw_donedamaged(msgsw->msg_pixwin);	(void)msgsw_display(msgsw);}msgsw_display(msgsw)	struct	msgsubwindow *msgsw;{	struct	rect rect;	(void)win_getsize(msgsw->msg_windowfd, &rect);	(void)pw_writebackground(msgsw->msg_pixwin,	    0, 0, (int)rect.r_width, (int)rect.r_height, PIX_CLR);	(void)formatstringtorect(msgsw->msg_pixwin, msgsw->msg_string,	    msgsw->msg_font, &rect);	return;}msgsw_setstring(msgsw, string)	struct	msgsubwindow *msgsw;	char	*string;{	msgsw->msg_string = string;	(void)msgsw_display(msgsw);}struct	toolsw *msgsw_createtoolsubwindow(tool, name, width, height, string, font)	struct	tool *tool;	char	*name;	short	width, height;	char	*string;	struct	pixfont *font;{	struct	toolsw *toolsw;	/*	 * Create subwindow	 */	toolsw = tool_createsubwindow(tool, name, width, height);	/*	 * Setup msg subwindow	 */	if((toolsw->ts_data = (caddr_t) msgsw_init(toolsw->ts_windowfd,	    string, font)) == (caddr_t)0)		return((struct  toolsw *)0);	toolsw->ts_io.tio_handlesigwinch = msgsw_handlesigwinch;	toolsw->ts_destroy = msgsw_done;	return(toolsw);}

⌨️ 快捷键说明

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