From 10e9a0f139e35adb4fdff6845afd07153def59a2 Mon Sep 17 00:00:00 2001 From: mattuy Date: Tue, 11 Dec 2018 20:11:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BD=BF=E7=94=A8=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B=E6=88=AA=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 31 +++++------- test.png | Bin 0 -> 8735 bytes test_x64/conctrl.cpp | 114 ------------------------------------------- test_x64/conctrl.dll | Bin 25600 -> 0 bytes test_x64/conctrl.h | 106 ---------------------------------------- test_x64/conctrl.lib | Bin 5224 -> 0 bytes test_x64/main.cpp | 20 -------- 7 files changed, 11 insertions(+), 260 deletions(-) create mode 100644 test.png delete mode 100644 test_x64/conctrl.cpp delete mode 100644 test_x64/conctrl.dll delete mode 100644 test_x64/conctrl.h delete mode 100644 test_x64/conctrl.lib delete mode 100644 test_x64/main.cpp diff --git a/README.md b/README.md index 592a682..1450eea 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@   你可以为每一**行**设定字符格式,字符格式由Windows的一些常量定义。 -  这不是一个设计严谨的库,使用需谨慎。 +  最初只是为了在某个高级语言中控制控制台输出而写这些函数,**这不是一个设计严谨的库,使用需谨慎。** ## 开发环境   Windows,Visual Studio 2017 @@ -28,7 +28,7 @@ ## 使用方法 * ### C++ - 将代码目录里的conctrl.h,编译得到的conctrl.dll和conctrl.lib放在相同目录,在你的代码中添加: + 将代码目录里的conctrl.h,编译得到的conctrl.dll和conctrl.lib放在VS项目目录,在你的代码中添加: > `#include "conctrl.h"` > `#pragma comment(lib, "conctrl.lib")` @@ -41,8 +41,6 @@   分隔线是需要占用空间的,由于制表符是双字节字符,因此分隔线长度必须是2的倍数。同时注意,水平分割线的**高度**是1个字符,而**垂直分隔线的宽度是2个字符**。 -  构建这个库的初衷是为了方便某些高级语言操作控制台,因此没有导出类而是封装了一系列C函数,并将它们的参数都设定为简单的数值型和字符串,避免在高级语言中额外定义数据类型,方便使用。 -   **你不应该直接操作ConsoleWindow、Pannel、和Spliter类对象**,而应仅将它们的指针作为参数传递。   此库通过调用Windows API实现,因此仅适用于Windows系统。 @@ -125,17 +123,18 @@ #include #include #include "conctrl.h" +#pragma comment(lib, "conctrl.lib") int main() { - ConsoleWindow* window = CreateConsoleWindow(80, 40); - Pannel* messagePannel = CreatePannel(window, 0, 0, 78, 25); - Pannel* writePannel = CreatePannel(window, 0, 26, 80, 40); - Spliter* spliter = CreateSpliter(window, 0, 25, 80, false, FOREGROUND_GREEN); - AddPannelText(messagePannel, "输入任意内容,回车发送", true, true, 7); + ConsoleWindow* window = CreateConsoleWindow(100, 30); + Pannel* messagePannel = CreatePannel(window, 0, 0, 100, 20); + Pannel* writePannel = CreatePannel(window, 0, 21, 100, 9); + Spliter* spliter = CreateSpliter(window, 0, 20, 100, false, FOREGROUND_GREEN); + AddPannelLine(messagePannel, "请在下方输入任意内容,回车发送", false, false, 7); FocusOnPannel(writePannel, 0, 0); while (true) { - char str[1024]; - gets_s(str, 1023); - AddPannelText(messagePannel, str, false, false, FOREGROUND_RED | FOREGROUND_GREEN); + char text[1024]; + gets_s(text, 1023); + AddPannelLine(messagePannel, text, false, false, FOREGROUND_RED | FOREGROUND_GREEN); ClearPannel(writePannel); FocusOnPannel(writePannel, 0, 0); } @@ -174,14 +173,6 @@ conctrl #define BACKGROUND_GREEN 0x0020 // background color contains green. #define BACKGROUND_RED 0x0040 // background color contains red. #define BACKGROUND_INTENSITY 0x0080 // background color is intensified. -#define COMMON_LVB_LEADING_BYTE 0x0100 // Leading Byte of DBCS -#define COMMON_LVB_TRAILING_BYTE 0x0200 // Trailing Byte of DBCS -#define COMMON_LVB_GRID_HORIZONTAL 0x0400 // DBCS: Grid attribute: top horizontal. -#define COMMON_LVB_GRID_LVERTICAL 0x0800 // DBCS: Grid attribute: left vertical. -#define COMMON_LVB_GRID_RVERTICAL 0x1000 // DBCS: Grid attribute: right vertical. -#define COMMON_LVB_REVERSE_VIDEO 0x4000 // DBCS: Reverse fore/back ground attribute. -#define COMMON_LVB_UNDERSCORE 0x8000 // DBCS: Underscore. -#define COMMON_LVB_SBCSDBCS 0x0300 // SBCS or DBCS flag. ``` ## 项目地址 diff --git a/test.png b/test.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8dd03b4eac99e3704a9aa3712e58968cb58812 GIT binary patch literal 8735 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 literal 0 HcmV?d00001 diff --git a/test_x64/conctrl.cpp b/test_x64/conctrl.cpp deleted file mode 100644 index 450a0b0..0000000 --- a/test_x64/conctrl.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#define _CRT_SECURE_NO_WARNINGS -#include "console_window.h" -#include "pannel.h" -#include "spliter.h" -#include "coding.h" -#include "conctrl.h" - -//ǰ̨ڶӦĿƴ -ConsoleWindow* CreateConsoleWindow(int width, int height) { - if (width <= 5 || height <= 5 || width > 32767 || height > 32767) - return new(std::nothrow) ConsoleWindow(); - else { - return new(std::nothrow) ConsoleWindow(width, height); - } -} - -void DestroyConsoleWindow(ConsoleWindow* window) { - delete window; -} - -//ôںͻС -bool ResizeScreenBuffer(ConsoleWindow* window, int width, int height) { - if (width <= 5 || height <= 5 || width > 32767 || height > 32767) - return false; - return window->Resize({ (SHORT)width, (SHORT)height }); -} -//ÿ̨ڱ -bool SetConsoleWindowTitle(char* _title, bool utf8) { - if (utf8) { - std::string title; - title = UTF8ToANSI(_title); - return SetConsoleTitle(title.c_str()); - } - return SetConsoleTitle(_title); -} -//һ -Pannel* CreatePannel(ConsoleWindow* window, int left, int top, int width, int height) { - if (left < 0 || top < 0 - || left > 32767 || top > 32767 || width > 32767 || height > 32767 - ) return NULL; - return window->NewPannel({ (SHORT)left, (SHORT)top, (SHORT)(left + width - 1), (SHORT)(top + height - 1) }); -} -//ɾ -void DestroyPannel(ConsoleWindow* window, Pannel* pannel) { - window->RemovePannel(pannel); -} -//PannelлС -bool SetMaxLineCache(Pannel* pannel, int lineCount) { - if (lineCount < 0) return false; - pannel->maxLineCount = lineCount; - return true; -} -//Pannelı -void AddPannelText(Pannel* pannel, const char* _text, bool focus, bool utf8, int attribute) { - std::string text; - if (utf8) text = UTF8ToANSI(_text); - else text = _text; - pannel->AddText(text, focus, attribute); -} -//Pannel -void AddPannelLine(Pannel* pannel, const char* _text, bool focus, bool utf8, int attribute) { - std::string text; - if (utf8) text = UTF8ToANSI(_text); - else text = _text; - pannel->AddLine(text, focus, attribute); -} -//Pannel -void ClearPannel(Pannel* pannel) { - pannel->Clear(); -} -//ƶıPannelС -bool MovePannel(Pannel* pannel, int left, int top, int width, int height) { - if(left > 32767 || top > 32767 || width > 32767 || height > 32767) return false; - if (left < 0) left = pannel->area.Left; - if (top < 0) top = pannel->area.Top; - if (width <= 5) width = pannel->area.Right - pannel->area.Left + 1; - if (height <= 5) height = pannel->area.Bottom - pannel->area.Top+ 1; - pannel->Move({ (SHORT)left, (SHORT)top, (SHORT)(left + width - 1), (SHORT)(top + height - 1)}); - return true; -} -//ǰ -bool ScrollPannelBackward(Pannel* pannel, int lineCount) { - return pannel->ScrollBackward(lineCount); -} -// -bool ScrollPannelForward(Pannel* pannel, int lineCount) { - return pannel->ScrollForward(lineCount); -} -//ض -bool ScrollPannelTo(Pannel* pannel, int lineTo) { - return pannel->ScrollTo(lineTo); -} -//õضλ -bool FocusOnPannel(Pannel* pannel, int offsetLeft, int offsetTop) { - return pannel->Focus({ (SHORT)offsetLeft, (SHORT)offsetTop }); -} -//һָߡ -Spliter* CreateSpliter(ConsoleWindow* window, int left, int top, int length, bool verticle, int attribute) { - if (length <= 0 - || left < 0 || left >= window->bufferSize.X - || top < 0 || top >= window->bufferSize.Y - ) return NULL; - return window->NewSpliter({ (SHORT)left, (SHORT)top}, length, verticle, attribute); -} -//ɾָ -void DestroySpliter(ConsoleWindow* window, Spliter* spliter) { - window->RemoveSpliter(spliter); -} -//ƶ趨ָ߳ -bool MoveSpliter(Spliter* spliter, int left, int top, int len) { - if (left < 0 || left > 32767 || top < 0 || top > 32767 || len < 0) return false; - spliter->Move({ (SHORT)left, (SHORT)top }, len); - return true; -} diff --git a/test_x64/conctrl.dll b/test_x64/conctrl.dll deleted file mode 100644 index 2fae2cef3165fbe45c21fed4984f317e72b3c979..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25600 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 diff --git a/test_x64/conctrl.h b/test_x64/conctrl.h deleted file mode 100644 index b215540..0000000 --- a/test_x64/conctrl.h +++ /dev/null @@ -1,106 +0,0 @@ -// ConsoleController -// 2018-11-28 -// By Mattuy -#ifndef _HEAD_CONSOLE_CONTROLLER_ -#define _HEAD_CONSOLE_CONTROLLER_ -#ifdef __cplusplus //cpp -class ConsoleWindow; -class Pannel; -class Spliter; -#else //C -typedef void ConsoleWindow; -typedef void Pannel; -typedef void Spliter; -#endif -extern "C" { - /** - * ̨ - * @return value, ָǰ̨Ŀָ̨룬ΪIJͨ - * ̨ʧܷ0 - * @param width, ĻȣЧΧ(5, 32767)Ĭ80 - * @param height, Ļ߶ȣЧΧ(5, 32767)Ĭ40 - */ - ConsoleWindow* CreateConsoleWindow(int width = 80, int height = 40); - //ԭ̨ٿ - void DestroyConsoleWindow(ConsoleWindow* window); - //ôںͻС - bool ResizeScreenBuffer(ConsoleWindow* window, int width, int height); - /** - * ÿ̨ڱ - * @param window, ҪñĴ - * @param title, Ҫõı - * @param utf8, Ƿutf8롣UTF-8Ϊ0ANSI - */ - bool SetConsoleWindowTitle(char* title, bool utf8 = false); - /** - * һ - * @return value, ָһָ - * @param window, - * @param left, ԴڵˮƽƫƣЧΧ(5, 32767) - * @param top, ԴڵֱƫƣЧΧ(5, 32767) - * @param width, ĿȣЧΧ(5, 32767) - * @param height, ĸ߶ȣЧΧ(5, 32767) - */ - Pannel* CreatePannel(ConsoleWindow* window, int left, int top, int width, int height); - //ɾ - void DestroyPannel(ConsoleWindow* window, Pannel* pannel); - //ôлС - bool SetMaxLineCache(Pannel* pannel, int lineCount); - /** - * PannelıлһвǻзβáAddPannelLineӵģ - * ıϲһСԭıҲᱻǡ - * @param window, - * @param text, Ҫӵַ - * @param focus, Ƿ񽫹ƶӵı - * @param utf8, Ƿutf8롣֧ANSIUTF-8룬UTF-8ҲתΪANSI - * 롣ĬΪfalse - * @param attribute, ıԣWindowsĿ̨ĬϺڵװ - */ - void AddPannelText(Pannel* pannel, const char* text, bool focus, bool utf8 = false, int attribute = 7); - //AddTextΨһIJͬǣַԻзβԶ뻻з - void AddPannelLine(Pannel* pannel, const char* text, bool focus, bool utf8 = false, int attribute = 7); - //Pannel⽫ͬʱpannelл - void ClearPannel(Pannel* pannel); - //ƶıPannelСͬCreatePannelЧ÷ı - bool MovePannel(Pannel* pannel, int left, int top, int width, int height); - /** - * ǰ - * @return value, ǰѴfalse򷵻true - * @param pannel, ҪĴ - * @param lineCount, ҪС0һԴ - */ - bool ScrollPannelBackward(Pannel* pannel, int lineCount); - // - bool ScrollPannelForward(Pannel* pannel, int lineCount); - //ضСкС0󣬷кЧfalse - bool ScrollPannelTo(Pannel* pannel, int lineTo); - /** - * õضλá - * @return value, offsetΧʧ - * @param pannel, ҪùڵĴ - * @param offsetLeft, ԴϽǵˮƽƫƣĬΪ0 - * @param offsetTop, ԴϽǵĴֱƫƣĬΪ0 - */ - bool FocusOnPannel(Pannel* pannel, int offsetLeft = 0, int offsetTop = 0); - /** - * һָߡ - * @return value, ָһָߵָ - * @param window, Ĵ - * @param left, ָԴڵˮƽƫƣЧΧ(5, 32767) - * @param top, ָԴڵֱƫƣЧΧ(5, 32767) - * @param length, ָߵijȻȡǰ߻Ǻȡ@param verticle - * @param verticle, ˮƽָ߻ֱָߡ0Ϊˮƽ0Ϊֱ - * @param attribute, ָߵıԣWindowsĿ̨ĬϺڵװ - */ - Spliter* CreateSpliter(ConsoleWindow* window, int left, int top, int length, bool verticle, int attribute = 7); - //ɾָ - void DestroySpliter(ConsoleWindow* window, Spliter* spliter); - /** - * ƶ趨ָߵij - * @param left, ԴˮƽƫƣС0򲻸ı - * @param top, ԴڵĴֱƫƣС0򲻸ı - * @param len, µij/߶ȡС0򲻸ı - */ - bool MoveSpliter(Spliter* spliter, int left, int top, int len); -} -#endif // !_HEAD_CONSOLE_CONTROLLER_ diff --git a/test_x64/conctrl.lib b/test_x64/conctrl.lib deleted file mode 100644 index 9f1234ab5a9410c840070893d9b57ea2757c6a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5224 zcmcIn&2JM&6#v;SB(dYK7^Id`$rL17iKaBzp^>V{iBr@F=R>wpFG$PA-qfbX8`(~w zz4V4S@NZP&$bn05oVfK+r2YZ@9}ovF>6@J$`|WsaY@Dw2c4yw3ncvL&nzxs}vpcoM zdi3jT@cHVSU|;pF`;E2ys^7X71#lIZ4+GI_KGNyNJ>2+IZ@)Zq|`;~6Q%D8vaIc${k?M4 z+WNjyEN|~u_sUkyZP$987A$M`PN_6J0KfYqq`dmWo!#5k)<$&$R4{4d^gCol<+H$(Rj{B=|f>~B}y3OC5O0DBK?akxEL#LwvOp=Pz3#?sj_F9gb zFhVHLuy429j?e+yyyE#gQ(ZYkW76U~_M=j>?G)`=gJTBS8}+(er|LZFDL9SU?~3Jy z#zEZ*g!->(>_z(CrMZ+$u!tDq_z3gJ z;0zXU4ogVjJkBDC6w;VO6d{Bs8W(}3c~`$H9WvlVQp5%{19e4(2u*mxKED8=l4z%X<=kAPJAW&ua1}T&}lTUNU&!&7WJl z(ZBgip$JasiG}F?r>LbTv|M)%j(@sRkzHVe8gzvRo&r*v%gwsov#+cu!8vODMf9)F zh|sry>o5Irbo0xHk_b+S)HuN{Ap4Ta56Te>qKg_9x-Q4DpD~ zg`tjI0KDxs6vsQ9m=RH&oESq4^vC1}9Kp|um;Z>>fi=G;K4FyUeY%BDlpS{>Pg%*U zYVlsQ6bgHu@~5{su|>0|)IHJQ#XRMP;tEgsLv{SG@Ra|>117QSXS9ith2+#)yZP-< zeEmZJ(#U45jft(wu`ZqoaZJWa=!mM?=73Y{ wG&jcklR6?5@f?h`C)4K$Pq|F?OL -#include -#include -#include "conctrl.h" -#pragma comment(lib, "conctrl.lib") -int main() { - ConsoleWindow* window = CreateConsoleWindow(80, 40); - Pannel* messagePannel = CreatePannel(window, 0, 0, 78, 25); - Pannel* writePannel = CreatePannel(window, 0, 26, 80, 40); - Spliter* spliter = CreateSpliter(window, 0, 25, 80, false, FOREGROUND_GREEN); - AddPannelText(messagePannel, "请在下方输入任意内容", true, true, 7); - FocusOnPannel(writePannel, 0, 0); - while (true) { - char text[1024]; - gets(text); - AddPannelText(messagePannel, text, false, false, FOREGROUND_RED | FOREGROUND_GREEN); - ClearPannel(writePannel); - FocusOnPannel(writePannel, 0, 0); - } -} \ No newline at end of file