亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? msg_win.c

?? BC3.1編譯,小交換機計費系統(tǒng).使用Dos做出如此好的界面,少有.
?? C
字號:
/* -------------------------------------------------------------------
	FILENAME:	msg_win.c
	FUNCTION:	This is the source file of the message popup function.
	AUTHOR:		Bob kong.
	DATE:		1993-06-18
   ------------------------------------------------------------------- */
#include<stdlib.h>
#include <string.h>
#include <alloc.h>
#include <graphics.h>
#include <dos.h>

#include <def.inc>
#include <func.inc>
#include <menufunc.inc>

extern UC Cursor_on;

void getmsgsize(UC *msg, UI *msgW, UI *msgH);
void disp_msg(UI x, UI y, UC *msg);

extern UL far *Tick_cnt_ptr;

static UI mode_settled = 0;
static UC wbk_c, wtt_c, msg_c;

/* ---------------------------------------------------------------------
	The following macros define the default colors of the window.
------------------------------------------------------------------------ */
#define WBK_C	2 		/* background color	*/
#define WTT_C	12		/* title color		*/
#define MSG_C	15		/* message color	*/

/* ----------------------------------------------------------------------
	The following macros defined the size of characters and Chinese words
	as well as the line space. All measured in points.
------------------------------------------------------------------------- */
#define CHAR_W  8				/* width of a character    */
#define HZ_W	16		        /* width of a Chinese word */
#define CHAR_H	16				/* height of a character or Chinese word */
#define LN_SP	8				/* line space			   */
#define LN_H	(CHAR_H+LN_SP)	/* line height			   */
#define BORDER	3				/* border width			   */

/* ----------------------------------------------------------------------
	FUNCTION:	This function will pop up an error message window.
				This function will automatically adjust the window size
				to fill in the messages. If one line is too long, it will be
				seperated automatically and the window width will be ajust
				to maxium width of the screen.
	CALLS:
	CALLED BY:	This is a general-purposed routine.
	INPUT:		(x, y):		The coordinate of the left-top corner of
							the screen to pop up the window.
				title:		String pointer to the window title.
				msg:		String pointer to the messages that will be
							showed in the window.
							The message string may be multilined, and
							seperated by '\n'.
	RETURN: 	None.
   ------------------------------------------------------------ */
void msg_win(UI x, UI y, UC *title, UC *msg, UC echo_time)
{
UI left, top;
UI right, bottom;
UI msg_w, msg_h;
UI wn_w, wn_h;
UL start_time;
UC old_cursor_stat;
MOUSE_BAND_STRUCT	mouse_band;
UI old_color;
struct fillsettingstype old_fl;
struct linesettingstype old_ln;
struct textsettingstype save_text;

	old_color = getcolor();
	getfillsettings(&old_fl);
	getlinesettings(&old_ln);

	if (!mode_settled)
	{
		wbk_c = WBK_C;
		wtt_c = WTT_C;
		msg_c = MSG_C;
	}
	mode_settled = 0;

  /* -- determine the window size -- */
	getmsgsize(msg, &msg_w, &msg_h);
	wn_w = (msg_w + 8)*CHAR_W + BORDER*2;
	wn_w = min(MAX_X, max(wn_w, HZ_W*(strlen(title)+3)));
	wn_h = (msg_h + 1)*LN_H+BORDER*2;
	if (*title)
		wn_h += LN_H+8;
	wn_h = min(MAX_Y, wn_h);

  /* -- calculate the coordination of the top-left and bottom-right corner
		of the window.
  */
	left = x;
	right = left + wn_w;
	if (right > MAX_X-5)
	{
		right = MAX_X-5;
		left = right - wn_w;
	}

	top = y;
	bottom = top + wn_h;
	if (bottom > MAX_Y-5)
	{
		bottom = MAX_Y-5;
		top = bottom - wn_h;
	}

	old_cursor_stat = Cursor_on;
	get_mouse_band(&mouse_band);
	cursor_off();

	pop_back(left,top,right,bottom,wbk_c);
	if (*title)
	{
		hz16_disp( left+(wn_w-strlen(title)*CHAR_W)/2, top+CHAR_H+4, title, wtt_c);
		disp_msg(left+32, top+LN_H*2+2, msg);
	}
	else
		disp_msg(left+32, top+CHAR_H+4, msg);


	gettextsettings(&save_text);
	settextstyle(4, HORIZ_DIR, 4);
	settextjustify(CENTER_TEXT, BOTTOM_TEXT);
	setcolor(6);
/*	outtextxy(x+21, y+36, "!");
	outtextxy(x+22, y+37, "!");
	outtextxy(x+23, y+38, "!");
*/	outtextxy(x+24, y+38, "!");
	outtextxy(x+25, y+38, "!");
	setcolor(12);
	outtextxy(x+20, y+35, "!");
	outtextxy(x+21, y+35, "!");
/*	outtextxy(x+22, y+35, "!");
*/	settextstyle(save_text.font, save_text.direction, save_text.charsize);
	settextjustify(save_text.horiz,save_text.vert);

	sound(2500); delay(60); sound (600); delay(10); nosound();  /* Beep */

	set_horizontal_band(left, right-BORDER);
	set_vertical_band(top, bottom-BORDER);
	cursor_on();
	clr_keybuf();
	start_time = *Tick_cnt_ptr;
	while (1)
	{
		if ( !keybuf_nul() )
		{
			get_key0();
			break;
		}
		if ( left_pressed() )
			break;
		if (echo_time)
		{
			if (*Tick_cnt_ptr-start_time>echo_time)
				break;
		}
	};

	cursor_off();
	rid_pop();
	set_mouse_band(&mouse_band);
	if (old_cursor_stat==TRUE)
		cursor_on();

  /* -- restore previous graphical settings -- */
	setcolor(old_color);
	setfillstyle(old_fl.pattern, old_fl.color);
	setlinestyle(old_ln.linestyle, old_ln.upattern, old_ln.thickness);

}

/* ======================== set_msg_color() ============================  */
void set_msg_color(UC bk_c, UC title_c, UC char_c)
{
	wbk_c = bk_c;
	wtt_c = title_c;
/*	wbd_c = border_c;*/
	msg_c = char_c;
	mode_settled = 1;
}

/*-------------------------------------------------------------------------
	Name		:	getmsgsize
	Prototype	:
			void getmsgsize(UC *msg, UI *msg_w, UI *msg_h)
	Function	:
			This function is used to inspect the maxium width and
		lines of the message that is to be shown.
	Parameters	:
		msg		pointer to the message string.
		msg_w	pointer to a integer that will return the maxium width
				of the message. The width is count by character.
		msg_h	pointer to a integer that will return the total lines
				of the message.
	Return Value:
			None. The results are return through pointers 'msg_w' and
		'msg_h'.
-------------------------------------------------------------------------*/
void getmsgsize(UC *msg, UI *msgW, UI *msgH)
{
UC *p;
UI msg_width, msg_high;
UI curW = 0 ;

	p = msg;
	msg_width = 0 ;
	msg_high = 0 ;
	while (*p)
	{
		if (*p == '\n')
		{
			msg_width = max(msg_width, curW);
			curW = 0 ;
			(msg_high) ++ ;
		}
		else
			curW ++ ;
		p ++ ;
   } ;
   *msgW = max( msg_width , curW );
   *msgH = msg_high + 1 ;
}

/*------------------------------------------------------------------
	Name		:	disp_msg
	Prototype	:
			void show_msg(UI x, UI y, UC *msg)
	Function	:
			This is used to show messages on the screen.
	Parameters	:
		(x, y)	top-left corner where to put the message.
		msg		message that is to be shown.
	Return Value:
			None.
------------------------------------------------------------------*/
void disp_msg(UI x ,UI y ,UC *msg)
{
UI curX=x ,curY = y ;
UC *p;

	p = msg ;
	while(*p)
	{
		if (*p == '\n')
		{
			curX = x ;
			curY += LN_H ;
			p ++ ;
			continue ;
		}
		if ( (unsigned)(*p)>0xa0  && (unsigned)(*(p+1))>0xa0 )
		{
			hz_16(*p-0xa0, *(p+1)-0xa0, curX, curY, msg_c) ;
			curX += HZ_W ;
			p +=2 ;
		}
		else
		{
			char_16(*p,curX,curY,msg_c);
			curX += CHAR_W ;
			p ++ ;
		}
   }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本国产视频| 91精品国产aⅴ一区二区| 亚洲一区成人在线| 久久亚洲一级片| 国产精品欧美极品| 欧美另类videos死尸| 国产成人av电影| 麻豆精品一区二区三区| 亚洲免费成人av| 精品福利二区三区| 欧美精品在线一区二区三区| 成人av资源在线观看| 精品一区二区三区在线观看| 亚洲国产欧美在线| 亚洲欧美日韩一区| 欧美国产1区2区| 91精品国产黑色紧身裤美女| 日本丰满少妇一区二区三区| 成人性生交大片免费看视频在线 | 久久国产精品72免费观看| 亚洲综合图片区| 最新欧美精品一区二区三区| 久久久久久综合| 精品久久久久久久久久久久久久久| 色婷婷av久久久久久久| 99免费精品视频| 高清av一区二区| 国产乱码精品一品二品| 国产一区二区精品久久| 久久超碰97人人做人人爱| 偷拍日韩校园综合在线| 亚洲国产美国国产综合一区二区| 亚洲欧美日韩电影| 亚洲美女在线国产| 一区二区三区av电影| 亚洲精品欧美在线| 亚洲一区二区三区视频在线播放| 亚洲欧美激情插| 亚洲精品网站在线观看| 亚洲精品综合在线| 亚洲一区二区三区四区在线| 一个色在线综合| 亚洲国产综合色| 日韩中文字幕亚洲一区二区va在线| 亚洲6080在线| 青青国产91久久久久久| 奇米影视7777精品一区二区| 日韩激情在线观看| 狠狠色丁香久久婷婷综合_中 | 99精品热视频| 91浏览器打开| 欧美亚洲高清一区| 欧美电影影音先锋| 日韩欧美一二三区| 久久久久国产精品麻豆| 欧美国产一区二区| 国产精品久久久久久久久久久免费看 | 亚洲成人免费av| 三级亚洲高清视频| 国产综合色在线| 高清beeg欧美| 色香色香欲天天天影视综合网| 欧美在线免费播放| 欧美一区二区福利在线| 久久日韩精品一区二区五区| 欧美国产一区在线| 亚洲中国最大av网站| 石原莉奈一区二区三区在线观看| 欧美福利视频导航| 日韩免费一区二区| 久久精品亚洲乱码伦伦中文 | 日韩女同互慰一区二区| 精品粉嫩aⅴ一区二区三区四区| 久久精品夜夜夜夜久久| 亚洲资源中文字幕| 精品一区免费av| av电影天堂一区二区在线观看| 日本韩国精品在线| 欧美精品一区二区蜜臀亚洲| 国产精品国产三级国产有无不卡 | 亚洲韩国一区二区三区| 精品亚洲国内自在自线福利| av电影在线观看完整版一区二区| 欧美精品丝袜久久久中文字幕| 久久精品这里都是精品| 亚洲综合在线电影| 国产一区二区不卡老阿姨| 91精品91久久久中77777| 精品国产一区二区三区四区四| 日韩美女啊v在线免费观看| 免费在线观看一区| 91美女蜜桃在线| 2022国产精品视频| 亚洲一区二区三区四区在线免费观看 | wwwwww.欧美系列| 亚洲激情五月婷婷| 国产精品白丝jk黑袜喷水| 欧美日韩一二三| 国产精品不卡视频| 精品一区二区三区在线播放视频| 欧洲另类一二三四区| 国产欧美日韩精品a在线观看| 三级一区在线视频先锋| 色综合久久久久网| 国产三级欧美三级| 麻豆精品久久久| 欧美丝袜自拍制服另类| 国产精品美女久久久久aⅴ| 久久成人免费日本黄色| 欧美欧美欧美欧美| 亚洲综合在线观看视频| www.久久久久久久久| 久久天天做天天爱综合色| 日韩av电影一区| 欧美图区在线视频| 亚洲精品网站在线观看| 91色porny| 国产精品女主播在线观看| 国产在线观看一区二区| 日韩一二三区视频| 午夜精品久久久久久久久| 一本久久a久久精品亚洲| 国产精品国产精品国产专区不蜜| 国产福利一区在线观看| 久久在线观看免费| 韩国女主播一区二区三区| 日韩欧美123| 极品瑜伽女神91| 精品久久国产97色综合| 久久精品99国产精品| 日韩午夜激情av| 蜜臀久久久久久久| 欧美一级久久久| 免费高清成人在线| 日韩视频一区二区在线观看| 免费成人在线影院| 亚洲精品一区二区三区影院| 精品无码三级在线观看视频| 欧美不卡123| 国产一区三区三区| 欧美国产欧美综合| 成人高清视频在线观看| 国产精品久久网站| 91丨九色丨黑人外教| 亚洲美女视频在线观看| 欧美性猛交xxxx黑人交| 婷婷成人激情在线网| 91精品国产免费| 精品亚洲国内自在自线福利| 久久久亚洲高清| 成人福利视频网站| 亚洲精品国产精华液| 欧美日韩国产高清一区二区三区 | av不卡免费在线观看| 自拍视频在线观看一区二区| 在线欧美日韩精品| 日本不卡视频在线| 久久综合中文字幕| 不卡电影免费在线播放一区| 成人免费在线观看入口| 欧美在线999| 久久国产精品无码网站| 国产视频一区不卡| 色综合天天综合网天天看片| 亚洲成人激情综合网| 日韩久久久精品| 成人动漫中文字幕| 亚洲午夜久久久久久久久电影网| 欧美一区二区三区婷婷月色| 激情伊人五月天久久综合| 国产精品福利影院| 91精品国产综合久久久久久| 国产成人综合视频| 亚洲一区二三区| 久久美女高清视频| 91国产成人在线| 精品影院一区二区久久久| 中文字幕一区二区不卡| 6080国产精品一区二区| 国产成人日日夜夜| 亚洲va国产va欧美va观看| 久久久国产精华| 欧美日韩在线观看一区二区| 国产精品一区二区在线观看网站 | 国产一区二区三区在线观看精品| 亚洲视频免费看| 久久先锋影音av鲁色资源| 欧美中文字幕不卡| 国产iv一区二区三区| 日韩二区三区在线观看| 中文字幕日韩一区二区| 欧美不卡一区二区三区四区| 色94色欧美sute亚洲线路一久 | 亚洲精品国产a| 国产丝袜美腿一区二区三区| 欧美精品免费视频| 色综合夜色一区| 国产成人三级在线观看| 五月天丁香久久| 伊人色综合久久天天人手人婷|