效果演示
可以生成一个输出框
首先
要创建输出框,设置输出框风格,可以设置的元素包括:
左上角符号,右上角符号,左下角符号,右下角符号,以及上下左右边界线符号,理论上,只要你电脑能显示的符号,都可以支持
该套代码在:
宽字符下工作
再次
你需要加载字符串,此函数可以多次调用,可以向输出框中添加内容
之后
show输出框 此时完成自动分页,外边框也将显示出来
最后
可调用函数输出指定页的内容
所有文字不会越出输出框,自动换行。
以下是代码
cwguser.h
#include<tchar.h> #include<string.h> #include <locale> #include <conio.h> #ifndef _CWGUSER_H_ #define _CWGUSER_H_ #include "cwgtype.h" #include "output.h" #endif
cwgtype.h
1 #ifndef _CWG_TYPE_H_ 2 #define _CWG_TYPE_H_ 3 typedef int CWG_COLOR; 4 typedef int CWG_HANDLE; 5 6 #endif
output.h
#ifndef _CWG_OUTPUT_H_ #define _CWG_OUTPUT_H_ #include<tchar.h> #include "cwgtype.h" #include <malloc.h> #define SC(x) L##x typedef struct _outputbox { int xbox; int ybox; //起始坐标 int xWidth; int yHeight; //范围 CWG_COLOR box_color; //边框颜色 TCHAR* pBoxUpLineCh; int nBoxUpLineCh; TCHAR* pBoxDownLineCh; int nBoxDownLineCh; TCHAR* pBoxLeftLineCh; int nBoxLeftLineCh; TCHAR* pBoxRightLineCh; //边线符号 int nBoxRightLineCh; //符号占位 TCHAR* pLeUpCh; int nLeUpCh; TCHAR* pRiUpCh; int nRiUpCh; TCHAR* pLeDoCh; int nLeDoCh; TCHAR* pRiDoCh; //四个角的符号 int nRiDoCh; }OUTPUTBOX; //移动光标 void gotoxy(int x, int y); //输出相关 //---------------------------------------------------------------------------------------------------------- //功能: //创建一个用于展示字符串的区域 (这是逻辑的 不显示) //参数: //输出框结构-包括输出框大小,位置,颜色(颜色宏),边框字符数组(8个字符构成,分别是上边框,下边框,左边框,右边框,左上角,右上角,左下角,右下角) // -不被赋值的成员将会采用DEFAULTSET中的设置. //字符串指针-输出框的标题,输入NULL表明无标题,最大长度为10个汉字,超出则返回 OE_CAPTIONERROR //内容大小 -表示要输出的最大字节数,如果输入的内容多于一个输出框的最大容量,输出框会自动增加翻页功能. //返回值 输出框句柄 //---------------------------------------------------------------------------------------------------------- CWG_HANDLE OutPutBox(OUTPUTBOX outputbox, const TCHAR * caption, int text_count_max); //---------------------------------------------------------------------------------------------------------- //功能: //载入字符串,将字符串写入到逻辑的输出框中 //参数: //输入框句柄 //字符串指针 //字符串大小 //字符串颜色 //返回值 成功返回0 如果数量超限则返回 OE_TEXTERROR //输入函数 int LoadStringToBox(CWG_HANDLE handle, const TCHAR * test, int count, CWG_COLOR color); //功能 //显示输出框 //参数 //输出框句柄 void showOutPutBox(CWG_HANDLE handle); //该函数由showOutPutBox调用 //功能: //画出边框 //参数 //输出框结构 //返回值 //一行所占的空格位(包含边框) int showBoxSide(OUTPUTBOX outputbox); //分页 //内容指针 分页数组的数组名 一行空格位 一页总空格位 void makePage(TCHAR *p,int line_s_count, int maxcount); //显示指定页的内容 分页数组名 页数() void showPage(int n); #endif
cwguser.cpp(vs .c不方便 若.c出现问题可以自行更改)
#include"cwguser.h" #include<stdio.h> CWG_HANDLE OutPutBox(OUTPUTBOX outputbox, const TCHAR * caption, int text_count_max) { static CWG_HANDLE ihandle = 100; extern OUTPUTBOX outputbox_save; extern CWG_HANDLE handle; extern TCHAR CAPTION[10]; extern int text_count_max_save; handle = ihandle++; outputbox_save.xbox = outputbox.xbox ; outputbox_save.ybox = outputbox.ybox ; outputbox_save.xWidth = outputbox.xWidth; outputbox_save.yHeight = outputbox.yHeight; outputbox_save.box_color = outputbox.box_color; outputbox_save.pBoxUpLineCh = outputbox.pBoxUpLineCh; outputbox_save.nBoxUpLineCh = outputbox.nBoxUpLineCh; outputbox_save.pBoxDownLineCh = outputbox.pBoxDownLineCh; outputbox_save.nBoxDownLineCh = outputbox.nBoxDownLineCh; outputbox_save.pBoxLeftLineCh = outputbox.pBoxLeftLineCh; outputbox_save.nBoxLeftLineCh = outputbox.nBoxLeftLineCh; outputbox_save.pBoxRightLineCh = outputbox.pBoxRightLineCh; outputbox_save.nBoxRightLineCh = outputbox.nBoxRightLineCh; outputbox_save.pLeDoCh = outputbox.pLeDoCh; outputbox_save.nLeDoCh = outputbox.nLeDoCh; outputbox_save.pLeUpCh = outputbox.pLeUpCh; outputbox_save.nLeUpCh = outputbox.nLeUpCh; outputbox_save.pRiDoCh = outputbox.pRiDoCh; outputbox_save.nRiDoCh = outputbox.nRiDoCh; outputbox_save.pRiUpCh = outputbox.pRiUpCh; outputbox_save.nRiUpCh = outputbox.nRiUpCh; wcscpy_s(CAPTION,wcslen(caption)+2,caption); text_count_max_save = text_count_max; return handle; } int LoadStringToBox(CWG_HANDLE handle, const TCHAR * text,int count, CWG_COLOR color) { //句柄这时候只是装逼用的 还没有什么卵用 这个位置先留给它 extern int text_count_max_save; extern int text_count_now_save; extern TCHAR * pText; if (text_count_now_save == 0)//如果是第一次加载string 准备好pText { pText = (TCHAR *)malloc(sizeof(TCHAR)*1); pText = (TCHAR *)memset(pText,(TCHAR)'