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

📄 vidmgr.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/* *  VIDMGR.C; Screen drawing, cursor and keyboard routines for text mode *            16-bit and 32-bit MS-DOS, 16-bit and 32-bit OS/2, and 32-bit *            Windows 95/NT applications.  Release 1.3. * *  This module written in March 1996 by Andrew Clarke and released to the *  public domain.  Last modified in October 1996. * *  VidMgr has been compiled and tested with the following C compilers: * *    - Borland C++ (16-bit) for DOS 3.1 *    - Borland C++ (16-bit) for DOS 4.5 *    - Borland C++ (32-bit) for OS/2 1.0 *    - Cygnus GNU C (32-bit) for Windows 95/NT b14.0 *    - DJGPP GNU C (32-bit) for DOS 2.0 *    - EMX GNU C (32-bit) for OS/2 & DOS 0.9b *    - IBM VisualAge C/C++ 3.0 (32-bit) for OS/2 *    - Microsoft C/C++ (16-bit) for OS/2 6.00a *    - Microsoft C/C++ (16-bit) for DOS 8.00c *    - Microsoft Quick C (16-bit) for DOS 2.50 *    - Microsoft Visual C/C++ (16-bit) for DOS 1.52 *    - WATCOM C/C++ (16-bit & 32-bit) for DOS 9.5 *    - WATCOM C/C++ (16-bit & 32-bit) for DOS 10.0 *    - WATCOM C/C++ (32-bit) for OS/2 10.0 *    - WATCOM C/C++ (32-bit) for Windows 95/NT 10.0 *    - HI-TECH Pacific C (16-bit) for DOS 7.51 *    - Symantec C/C++ (16-bit) for DOS 7.0 *    - Zortech C/C++ (16-bit) for DOS 3.0r4 */#include <stdio.h>#include <stdarg.h>#include <string.h>#include "vidmgr.h"struct vm_info vm_startup;char vm_curattr;char vm_frame_blank[] = "      ";char vm_frame_single[] = "谀砍蕾";char vm_frame_double[] = "赏缓燃";void vm_setattr(char attr){    vm_curattr = attr;}void vm_printf(char x, char y, const char *format,...){    va_list args;    char buffer[512];    va_start(args, format);    vsprintf(buffer, format, args);    va_end(args);    vm_puts(x, y, buffer);}void vm_printfcenter(char row, const char *format,...){    va_list args;    char buffer[512];    va_start(args, format);    vsprintf(buffer, format, args);    va_end(args);    vm_puts((char)((vm_getscreenwidth() / 2) - (strlen(buffer) / 2)), row, buffer);}void vm_printfbetween(char x1, char x2, char row, const char *format,...){    char x;    va_list args;    char buffer[512];    va_start(args, format);    vsprintf(buffer, format, args);    va_end(args);    if ((char)strlen(buffer) >= (char)(x2 - x1 + 1))    {        vm_puts(x1, row, buffer);    }    else    {        x = (char)(x1 + (x2 - x1 + 1 - strlen(buffer)) / 2);        vm_puts(x, row, buffer);    }}void vm_xprintf(char x, char y, char attr, const char *format,...){    va_list args;    char buffer[512];    va_start(args, format);    vsprintf(buffer, format, args);    va_end(args);    vm_xputs(x, y, attr, buffer);}void vm_xprintfcenter(char row, char attr, const char *format,...){    va_list args;    char buffer[512];    va_start(args, format);    vsprintf(buffer, format, args);    va_end(args);    vm_xputs((char)((vm_getscreenwidth() / 2) - (strlen(buffer) / 2)), row, attr, buffer);}void vm_xprintfbetween(char x1, char x2, char row, char attr, const char *format,...){    char x;    va_list args;    char buffer[512];    va_start(args, format);    vsprintf(buffer, format, args);    va_end(args);    if ((char)strlen(buffer) >= (char)(x2 - x1 + 1))    {        vm_xputs(x1, row, attr, buffer);    }    else    {        x = (char)(x1 + (x2 - x1 + 1 - strlen(buffer)) / 2);        vm_xputs(x, row, attr, buffer);    }}void vm_paintclearscreen(char attr){    vm_paintclearbox(1, 1, vm_getscreenwidth(), vm_getscreenheight(), attr);}void vm_paintclearline(char row, char attr){    vm_paintclearbox(1, row, vm_getscreenwidth(), row, attr);}void vm_paintcleareol(char row, char attr){    vm_paintclearbox(vm_wherex(), row, (char)(vm_getscreenwidth() - vm_wherex() + 1), row, attr);}void vm_paintscreen(char attr){    vm_paintbox(1, 1, vm_getscreenwidth(), vm_getscreenheight(), attr);}void vm_paintline(char row, char attr){    vm_paintbox(1, row, vm_getscreenwidth(), row, attr);}void vm_painteol(char row, char attr){    vm_paintbox(vm_wherex(), row, (char)(vm_getscreenwidth() - vm_wherex() + 1), row, attr);}void vm_clearscreen(void){    vm_clearbox(1, 1, vm_getscreenwidth(), vm_getscreenheight());}void vm_clearline(char row){    vm_clearbox(1, row, vm_getscreenwidth(), row);}void vm_cleareol(char row){    vm_clearbox(vm_wherex(), row, (char)(vm_getscreenwidth() - vm_wherex() + 1), row);}void vm_fillscreen(char ch){    vm_fillbox(1, 1, vm_getscreenwidth(), vm_getscreenheight(), ch);}void vm_fillline(char row, char ch){    vm_fillbox(1, row, vm_getscreenwidth(), row, ch);}void vm_filleol(char row, char ch){    vm_fillbox(vm_wherex(), row, (char)(vm_getscreenwidth() - vm_wherex() + 1), row, ch);}void vm_clrscr(void){    vm_paintclearscreen(vm_curattr);    vm_gotoxy(1, 1);}void vm_clreol(void){    vm_paintcleareol(vm_wherey(), vm_curattr);}void vm_vertline(char y1, char y2, char col, char attr, char ch){    char y;    for (y = y1; y <= y2; y++)    {        vm_xputch(col, y, attr, ch);    }}void vm_frame(char x1, char y1, char x2, char y2, char attr, char *frame){    vm_xputch(x1, y1, attr, frame[0]);    vm_horizline((char)(x1 + 1), (char)(x2 - 1), y1, attr, frame[1]);    vm_xputch(x2, y1, attr, frame[2]);    vm_vertline((char)(y1 + 1), (char)(y2 - 1), x1, attr, frame[3]);    vm_vertline((char)(y1 + 1), (char)(y2 - 1), x2, attr, frame[3]);    vm_xputch(x1, y2, attr, frame[4]);    vm_horizline((char)(x1 + 1), (char)(x2 - 1), y2, attr, frame[1]);    vm_xputch(x2, y2, attr, frame[5]);}

⌨️ 快捷键说明

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