188 lines
5.2 KiB
C++
188 lines
5.2 KiB
C++
|
|
//WIN32 desktop application UI framework (2d graphical library:direct2d,后期可能会采用其他跨平台的2d图形库对整个UI框架进行跨平台)
|
||
|
|
|
||
|
|
#include <Windows.h>
|
||
|
|
|
||
|
|
#include "EzUI/EzUI.h"
|
||
|
|
#include "EzUI/BorderlessWindow.h"
|
||
|
|
#include "EzUI/Button.h"
|
||
|
|
#include "EzUI/TileListView.h"
|
||
|
|
#include "EzUI/VListView.h"
|
||
|
|
#include "EzUI/HListView.h"
|
||
|
|
#include "EzUI/HLayout.h"
|
||
|
|
#include "EzUI/VLayout.h"
|
||
|
|
#include "EzUI/Application.h"
|
||
|
|
#include "EzUI/TextBox.h"
|
||
|
|
#include "EzUI/ComBoBox.h"
|
||
|
|
#include "EzUI/CheckBox.h"
|
||
|
|
#include "EzUI/radiobutton.h"
|
||
|
|
#include "EzUI/TreeView.h"
|
||
|
|
|
||
|
|
using namespace ezui;
|
||
|
|
class MainFrm :public Window {
|
||
|
|
public:
|
||
|
|
HLayout* main;
|
||
|
|
MainFrm(int cx, int cy) :Window(cx, cy) {
|
||
|
|
|
||
|
|
//以下代码专用与测试释放托管问题
|
||
|
|
|
||
|
|
main = new HLayout;
|
||
|
|
|
||
|
|
for (size_t i = 1; i <= 3; i++)
|
||
|
|
{
|
||
|
|
auto ck = new RadioButton(this);
|
||
|
|
ck->CheckedStyle.Border.Bottom = 10;
|
||
|
|
ck->CheckedStyle.Border.Style = StrokeStyle::Solid;
|
||
|
|
ck->CheckedStyle.Border.Color = Color::Red;
|
||
|
|
ck->CheckedStyle.BackImage = Image::Make("headImg.jpg");
|
||
|
|
ck->SetText("aaa" + std::to_string(i));
|
||
|
|
|
||
|
|
main->Add(ck);
|
||
|
|
}
|
||
|
|
|
||
|
|
SetLayout(main);
|
||
|
|
}
|
||
|
|
|
||
|
|
virtual ~MainFrm() {
|
||
|
|
delete main;
|
||
|
|
}
|
||
|
|
void OnClose(bool& b) {
|
||
|
|
if (this->GetText() == "modal") {
|
||
|
|
//Application::Exit(0);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
Application::Exit(0);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
|
||
|
|
{
|
||
|
|
Application app;//消息循环对象
|
||
|
|
app.EnableHighDpi();
|
||
|
|
//{
|
||
|
|
// MainFrm frm(800, 600);//无边框窗口
|
||
|
|
// frm.Show();
|
||
|
|
// return app.Exec();
|
||
|
|
//}
|
||
|
|
|
||
|
|
MainFrm frm(800, 600);//无边框窗口
|
||
|
|
VLayout mainLayout;//窗口中的main布局
|
||
|
|
|
||
|
|
mainLayout.Style.BackColor = Color::White;//主布局背景颜色
|
||
|
|
//HLayout title(&mainLayout);//标题
|
||
|
|
//title.SetFixedHeight(45);//设置固定高度
|
||
|
|
//title.Style.BackgroundColor = Color::Pink;//控件背景颜色
|
||
|
|
//title.Action = ControlAction::MoveWindow;//可移动窗口的行为
|
||
|
|
|
||
|
|
//Label text(&title);//标题文字
|
||
|
|
//text.Action = ControlAction::MoveWindow;//可移动窗口的行为
|
||
|
|
//text.SetText(L"hello world ");//给label设置文字
|
||
|
|
|
||
|
|
Label closeBtn;//关闭按钮
|
||
|
|
|
||
|
|
closeBtn.Action = ControlAction::Close;//关闭窗口的行为
|
||
|
|
|
||
|
|
closeBtn.Style.FontFamily = L"Marlett";//设置成icon字体
|
||
|
|
|
||
|
|
closeBtn.Style.FontSize = 13;//字体大小
|
||
|
|
|
||
|
|
closeBtn.HoverStyle.ForeColor = Color::White;//伪样式 鼠标悬浮字体颜色变成白色
|
||
|
|
|
||
|
|
closeBtn.SetFixedWidth(45);//设置绝对高度
|
||
|
|
|
||
|
|
closeBtn.SetText(L"r");//窗口的关闭按钮icon
|
||
|
|
|
||
|
|
//Label labelBottom;
|
||
|
|
//labelBottom.SetText(L"这是一个简单的窗口示例!");
|
||
|
|
HListView list;
|
||
|
|
list.SetParent(&mainLayout);
|
||
|
|
//list.SetAutoHeight(true);
|
||
|
|
for (size_t i = 0; i < 10; i++)
|
||
|
|
{
|
||
|
|
Label* lb = new Label;// (&list);
|
||
|
|
//lb->Dock = DockStyle::Horizontal;
|
||
|
|
lb->SetText(std::to_string(i));
|
||
|
|
lb->Name = std::to_string(i);
|
||
|
|
lb->SetFixedSize({ 100,30 });
|
||
|
|
lb->Style.BackColor = Color::LightGray;
|
||
|
|
lb->HoverStyle.BackColor = Color::Red;
|
||
|
|
lb->Margin = 1;
|
||
|
|
lb->EventHandler = [&list](Control* sd, const EventArgs& arg)->void {
|
||
|
|
if (arg.EventType == Event::OnMouseDown) {
|
||
|
|
/*list.Remove(sd);
|
||
|
|
list.Invalidate();*/
|
||
|
|
MainFrm frm(500, 300);//无边框窗口
|
||
|
|
frm.SetText("modal");
|
||
|
|
VLayout mainLayout;//窗口中的main布局
|
||
|
|
mainLayout.Style.BackColor = Color::White;//主布局背景颜色
|
||
|
|
frm.SetLayout(&mainLayout);
|
||
|
|
frm.ShowModal();
|
||
|
|
}
|
||
|
|
};
|
||
|
|
list.Add(lb);
|
||
|
|
}
|
||
|
|
|
||
|
|
ComboBox cbox;
|
||
|
|
cbox.Style.Border = 1;
|
||
|
|
cbox.Style.Border.Color = Color::Gray;
|
||
|
|
cbox.Style.Border.Style = StrokeStyle::Solid;
|
||
|
|
|
||
|
|
cbox.SetFixedSize({ 100,30 });
|
||
|
|
cbox.SetParent(&mainLayout);
|
||
|
|
cbox.AddItem(L"-请选择-");
|
||
|
|
cbox.AddItem(L"青菜");
|
||
|
|
cbox.AddItem(L"牛肉");
|
||
|
|
cbox.AddItem(L"猪肉");
|
||
|
|
cbox.SetCheck(0);
|
||
|
|
|
||
|
|
|
||
|
|
TreeView treeView;
|
||
|
|
mainLayout.Add(&treeView);
|
||
|
|
for (size_t i = 0; i < 20; i++)
|
||
|
|
{
|
||
|
|
treeView.AddNode("nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_nodeName_"+std::to_string(i));
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
TextBox text;
|
||
|
|
text.SetParent(&mainLayout);
|
||
|
|
//text.SetFixedSize({ 100,50 });
|
||
|
|
text.Style.Border.Color = Color::Gray;
|
||
|
|
text.Style.Border = 1;
|
||
|
|
text.SetMultiLine(true);
|
||
|
|
text.Margin.Left = 20;
|
||
|
|
text.Margin.Right = 20;
|
||
|
|
//text.Style.Border.Radius = 20;
|
||
|
|
|
||
|
|
text.SetText(L"啊撒旦艰苦换个房间看电视进\n口的方电视进\n口的方电视进\n口的方电视进\n口的方电视进\n口的方电视进\n口的方电视进\n口的方电视进\n口的方电视进\n口的方式但是几乎都是复活节过段时间韩国");
|
||
|
|
//text.HoverStyle.FontSize = 50;
|
||
|
|
//text.ActiveStyle.FontSize = 50;
|
||
|
|
text.GetScrollBar()->SetFixedWidth(20);
|
||
|
|
|
||
|
|
Button btn;
|
||
|
|
btn.SetParent(&mainLayout);
|
||
|
|
btn.SetText(L"单行/多行切换");
|
||
|
|
btn.SetFixedSize({ 150,40 });
|
||
|
|
btn.EventHandler = [&text](Control* sd, const EventArgs& arg)->void {
|
||
|
|
if (arg.EventType == Event::OnMouseDown) {
|
||
|
|
text.SetMultiLine(!text.IsMultiLine());
|
||
|
|
text.Invalidate();
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
/*for (size_t i = 0; i < 99999; i++)
|
||
|
|
{
|
||
|
|
Button* lb = new Button(&list);
|
||
|
|
lb->SetText("button" + std::to_string(i));
|
||
|
|
lb->SetFixedSize({ 50,30 });
|
||
|
|
}*/
|
||
|
|
|
||
|
|
//mainLayout.AddControl(&labelBottom);//添加控件
|
||
|
|
|
||
|
|
frm.SetLayout(&mainLayout);//给窗口设置布局
|
||
|
|
|
||
|
|
frm.Show();//显示窗口
|
||
|
|
return app.Exec();//进行消息循环
|
||
|
|
|
||
|
|
}
|