Files
conctrl/conctrl/spliter.cpp
T
2018-11-28 22:54:53 +08:00

41 lines
1.0 KiB
C++

#include "spliter.h"
#include "console_window.h"
Spliter::Spliter(ConsoleWindow* window, COORD pos, SHORT len, bool verticle, WORD attr) {
this->window = window;
this->position = pos;
this->length = len;
this->verticle = verticle;
this->attribute = attr;
this->draw();
}
void Spliter::Clear() {
this->draw(true);
}
//移动或重置长度
void Spliter::Move(COORD _position, SHORT len) {
this->position = _position;
this->length = len;
this->draw();
}
//绘制或清除
void Spliter::draw(bool clear) {
DWORD written;
COORD curPosition = this->position;
//设定填充字
const char* spliter;
if (clear) spliter = " ";
else spliter = this->verticle ? "" : "";
//取步进方向
SHORT* direct = this->verticle ? &curPosition.Y : &curPosition.X;
//画分割线
for (SHORT i = 0; i < this->length; i++) {
FillConsoleOutputAttribute(this->window->hOutput, this->attribute, 2, curPosition, &written);
WriteConsoleOutputCharacter(this->window->hOutput, spliter, 2, curPosition, &written);
this->verticle ? curPosition.Y += 2 : curPosition.X += 2;
}
}