#pragma once // C runtime header #ifdef __cplusplus #include #include #include #include #endif // base header #include "base/base.h" // duilib #include "duilib/UIlib.h" #include "ui_components/ui_components.h" #include "new_monitor_form.h" #include "uart_process.h" #include "tcp_client_form.h" #include "tcp_server_form.h" #include "udp_form.h" #include "udp_group_form.h" #include "websocket_client_form.h" #include "websocket_client.h" #include "websocket_server_form.h" #include #include class BasicForm : public ui::WindowImplBase { public: BasicForm(); ~BasicForm(); /** * 一下三个接口是必须要覆写的接口,父类会调用这三个接口来构建窗口 * GetSkinFolder 接口设置你要绘制的窗口皮肤资源路径 * GetSkinFile 接口设置你要绘制的窗口的 xml 描述文件 * GetWindowClassName 接口设置窗口唯一的类名称 */ virtual std::wstring GetSkinFolder() override; virtual std::wstring GetSkinFile() override; virtual std::wstring GetWindowClassName() const override; virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) override; /** * 收到 WM_CREATE 消息时该函数会被调用,通常做一些控件初始化的操作 */ void InitWindow() override; LuaBindInterface* FindCurrentFormByLuaPointer(lua_State*); /** * 收到 WM_CLOSE 消息时该函数会被调用 */ virtual LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); static const std::wstring kClassName; private: NewMonitorForm* mMonitorNewSelect; ui::TabBox *mRightSide; ui::TreeView *mMonitor; std::map mUartForm; std::map mTcpClientForm; std::map mTcpServerForm; std::map mUdpForm; std::map mUdpGroupForm; std::map mWebsocketClientForm; std::map mWebsocketServerForm; ui::Control* mRightShow; };