#pragma once #include "afxwin.h" #include #include // 客户端信息结构 struct ClientInfo { std::string ip; uint16_t port; bool versionOk; std::string status; std::string connectTime; }; // CClientListDlg 对话框 class CClientListDlg : public CDialogEx { DECLARE_DYNAMIC(CClientListDlg) public: CClientListDlg(CWnd* pParent = nullptr); // 标准构造函数 virtual ~CClientListDlg(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_DIALOG_CLIENT_LIST }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP() public: virtual BOOL OnInitDialog(); afx_msg void OnBnClickedRefresh(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); private: void RefreshClientList(); void UpdateClientList(const std::vector& clients); private: CListCtrl m_listClients; std::vector m_clients; };