From b17d7f32462cc022478cf9bd8de52cca859810af Mon Sep 17 00:00:00 2001 From: zcy <290198252@qq.com> Date: Thu, 16 Sep 2021 11:34:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E8=B0=83=E8=AF=95=E5=99=A8?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=88=B0=E6=94=B9=E6=A1=86=E6=9E=B6=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/proto_debuger/base_form.cpp | 102 +++++++++++++------- examples/proto_debuger/base_form.h | 4 + examples/proto_debuger/new_monitor_form.cpp | 80 ++++++++++++++- examples/proto_debuger/new_monitor_form.h | 1 - 4 files changed, 148 insertions(+), 39 deletions(-) diff --git a/examples/proto_debuger/base_form.cpp b/examples/proto_debuger/base_form.cpp index a1188da9..4df05d0d 100644 --- a/examples/proto_debuger/base_form.cpp +++ b/examples/proto_debuger/base_form.cpp @@ -1,15 +1,17 @@ #include "base_form.h" -#include "new_monitor_form.h" const std::wstring BasicForm::kClassName = L"Basic"; #define WM_USER_POS_CHANGED (WM_USER + 2) -BasicForm::BasicForm() +BasicForm::BasicForm(): + mMonitorNewSelect(nullptr) { + } BasicForm::~BasicForm() { + } std::wstring BasicForm::GetSkinFolder() @@ -27,15 +29,10 @@ std::wstring BasicForm::GetWindowClassName() const return kClassName; } - LRESULT BasicForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { if (uMsg == WM_USER_POS_CHANGED) { - NewMonitorForm* window = new NewMonitorForm(); - window->Create(NULL, NewMonitorForm::kClassName.c_str(), WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX & WS_SIZEBOX, 0); - window->CenterWindow(); - window->ShowModalFake(this->m_hWnd); - nim_comp::Toast::ShowToast(L"自定义消息被调用", 1000, this->GetHWND()); + } return WindowImplBase::HandleMessage(uMsg, wParam, lParam); } @@ -43,38 +40,71 @@ LRESULT BasicForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) void BasicForm::InitWindow() { /* Show settings menu */ - ui::Button* settings = dynamic_cast(FindControl(L"test_customize")); - if (nullptr != settings) { - settings->AttachClick([this](ui::EventArgs* args) { - printf("%d\r\n", ::PostMessage(this->GetHWND(), WM_USER_POS_CHANGED, 0, 0)); + ui::Button* btn_add_new = dynamic_cast(FindControl(L"add_new")); + btn_add_new->SetText(L"新建监听项"); + if (nullptr != btn_add_new) { + btn_add_new->AttachClick([this](ui::EventArgs* args) { + if (mMonitorNewSelect == nullptr) { + mMonitorNewSelect = new NewMonitorForm(); + mMonitorNewSelect->Create(this->GetHWND(), NewMonitorForm::kClassName.c_str(), + WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX & WS_SIZEBOX, 0); + mMonitorNewSelect->CenterWindow(); + mMonitorNewSelect->ShowModalFake(this->GetHWND()); + } + else { + mMonitorNewSelect = new NewMonitorForm(); + mMonitorNewSelect->Create(this->GetHWND(), NewMonitorForm::kClassName.c_str(), + WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX & WS_SIZEBOX, 0); + mMonitorNewSelect->CenterWindow(); + mMonitorNewSelect->ShowModalFake(this->GetHWND()); + } return true; - }); + }); } ui::TreeView* tree = dynamic_cast(FindControl(L"tree")); if (nullptr != tree) { - ui::TreeNode* parent_node = nullptr; - for (auto j = 0; j < 8; j++) - { - ui::TreeNode* node = new ui::TreeNode; - node->SetClass(L"listitem"); - node->SetFixedHeight(20); - if (parent_node) - { - node->SetText(nbase::StringPrintf(L"Child node %d", j)); - node->SetMargin({ 10, 0, 0, 0 }); - parent_node->AddChildNode(node); - } - else - { - node->SetText(nbase::StringPrintf(L"Parent node", j)); - tree->GetRootNode()->AddChildNode(node); - parent_node = node; - parent_node->AttachClick([this](ui::EventArgs* args) { - printf("%d\r\n", ::PostMessage(this->GetHWND(), WM_USER_POS_CHANGED, 0, 0)); - return true; - }); - } - } + ui::TreeNode* node = new ui::TreeNode; + node->SetText(nbase::StringPrintf(L"uart")); + node->SetClass(L"listitem"); + node->SetFixedHeight(20); + node->SetMargin({ 10, 0, 0, 0 }); + tree->GetRootNode()->AddChildNode(node); + + node = new ui::TreeNode; + node->SetText(nbase::StringPrintf(L"tcp client")); + node->SetClass(L"listitem"); + node->SetFixedHeight(20); + node->SetMargin({ 10, 0, 0, 0 }); + tree->GetRootNode()->AddChildNode(node); + + + node = new ui::TreeNode; + node->SetText(nbase::StringPrintf(L"tcp server")); + node->SetClass(L"listitem"); + node->SetFixedHeight(20); + node->SetMargin({ 10, 0, 0, 0 }); + tree->GetRootNode()->AddChildNode(node); + + node = new ui::TreeNode; + node->SetText(nbase::StringPrintf(L"udp client")); + node->SetClass(L"listitem"); + node->SetFixedHeight(20); + node->SetMargin({ 10, 0, 0, 0 }); + tree->GetRootNode()->AddChildNode(node); + + node = new ui::TreeNode; + node->SetText(nbase::StringPrintf(L"udp server")); + node->SetClass(L"listitem"); + node->SetFixedHeight(20); + node->SetMargin({ 10, 0, 0, 0 }); + tree->GetRootNode()->AddChildNode(node); + + node = new ui::TreeNode; + node->SetText(nbase::StringPrintf(L"udp group")); + node->SetClass(L"listitem"); + node->SetFixedHeight(20); + node->SetMargin({ 10, 0, 0, 0 }); + tree->GetRootNode()->AddChildNode(node); } } diff --git a/examples/proto_debuger/base_form.h b/examples/proto_debuger/base_form.h index 795724ab..ee9cbd5f 100644 --- a/examples/proto_debuger/base_form.h +++ b/examples/proto_debuger/base_form.h @@ -14,6 +14,7 @@ // duilib #include "duilib/UIlib.h" #include "ui_components/ui_components.h" +#include "new_monitor_form.h" class BasicForm : public ui::WindowImplBase @@ -43,4 +44,7 @@ public: virtual LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); static const std::wstring kClassName; +private: + NewMonitorForm* mMonitorNewSelect; + }; diff --git a/examples/proto_debuger/new_monitor_form.cpp b/examples/proto_debuger/new_monitor_form.cpp index 2a76d49b..1acb3126 100644 --- a/examples/proto_debuger/new_monitor_form.cpp +++ b/examples/proto_debuger/new_monitor_form.cpp @@ -32,10 +32,86 @@ LRESULT NewMonitorForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) void NewMonitorForm::InitWindow() { -} + ui::Button* btn_add_new = dynamic_cast(FindControl(L"exit_button")); + if (nullptr != btn_add_new) { + btn_add_new->SetText(L"退出"); + btn_add_new->AttachClick([this](ui::EventArgs*) { + this->Close(); + return true; + }); + } + ui::Combo* combo_add_new = dynamic_cast(FindControl(L"combo")); + if (NULL != combo_add_new) { + ui::ListContainerElement* element = new ui::ListContainerElement; + element->SetClass(L"listitem"); + element->SetFixedHeight(30); + element->SetBkColor(L"white"); + element->SetTextPadding({ 6,0,6,0 }); + element->SetText(nbase::StringPrintf(L"")); + combo_add_new->Add(element); + + element = new ui::ListContainerElement; + element->SetClass(L"listitem"); + element->SetFixedHeight(30); + element->SetBkColor(L"white"); + element->SetTextPadding({ 6,0,6,0 }); + element->SetText(nbase::StringPrintf(L"uart")); + + combo_add_new->Add(element); + + element = new ui::ListContainerElement; + element->SetClass(L"listitem"); + element->SetFixedHeight(30); + element->SetBkColor(L"white"); + element->SetTextPadding({ 6,0,6,0 }); + element->SetText(nbase::StringPrintf(L"tcp client")); + combo_add_new->Add(element); + + element = new ui::ListContainerElement; + element->SetClass(L"listitem"); + element->SetFixedHeight(30); + element->SetBkColor(L"white"); + element->SetTextPadding({ 6,0,6,0 }); + element->SetText(nbase::StringPrintf(L"tcp server")); + combo_add_new->Add(element); + + element = new ui::ListContainerElement; + element->SetClass(L"listitem"); + element->SetFixedHeight(30); + element->SetBkColor(L"white"); + element->SetTextPadding({ 6,0,6,0 }); + element->SetText(nbase::StringPrintf(L"udp client")); + combo_add_new->Add(element); + + element = new ui::ListContainerElement; + element->SetClass(L"listitem"); + element->SetFixedHeight(30); + element->SetBkColor(L"white"); + element->SetTextPadding({ 6,0,6,0 }); + element->SetText(nbase::StringPrintf(L"udp server")); + combo_add_new->Add(element); + + + } + + combo_add_new->AttachAllEvents([this](ui::EventArgs* ev) { + if (nullptr != ev) { + if (ev->Type == 42) { + auto text = p->GetText(); + wprintf(L"%s\r\n", text.c_str()); + } + printf("%d\r\n", ev->Type); + auto p = static_cast(ev->pSender); + auto text = p->GetText(); + wprintf(L"%s\r\n", text.c_str()); + } + return true; + }); + + +} LRESULT NewMonitorForm::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - PostQuitMessage(0L); return __super::OnClose(uMsg, wParam, lParam, bHandled); } diff --git a/examples/proto_debuger/new_monitor_form.h b/examples/proto_debuger/new_monitor_form.h index 1a1ee269..f9a94481 100644 --- a/examples/proto_debuger/new_monitor_form.h +++ b/examples/proto_debuger/new_monitor_form.h @@ -7,7 +7,6 @@ #include #endif -// base header #include "base/base.h" // duilib