Files
SimpleRemoter/server/2015Remote/SearchBarDlg.h
2026-04-19 22:55:21 +02:00

70 lines
2.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// SearchBarDlg.h - 浮动搜索工具栏
#pragma once
#include "Resource.h"
#include "LangManager.h"
#include "CIconButton.h"
#include <vector>
class CMy2015RemoteDlg;
class CSearchBarDlg : public CDialogLangEx
{
DECLARE_DYNAMIC(CSearchBarDlg)
public:
CSearchBarDlg(CMy2015RemoteDlg* pParent = nullptr);
virtual ~CSearchBarDlg();
enum { IDD = IDD_SEARCH_BAR };
CMy2015RemoteDlg* m_pParent;
// 控件
CEdit m_editSearch;
CIconButton m_btnPrev;
CIconButton m_btnNext;
CIconButton m_btnClose;
CStatic m_staticCount;
CToolTipCtrl m_tooltip;
// 搜索状态
std::vector<uint64_t> m_Results; // 匹配项的 clientID而非索引避免列表变化导致失效
int m_nCurrentIndex; // 当前高亮的结果索引
CString m_strLastSearch; // 上次搜索文本
int FindListIndexByClientID(uint64_t clientID); // 根据 clientID 查找当前列表索引
// 方法
void Show(); // 显示搜索栏
void Hide(); // 隐藏搜索栏
void DoSearch(); // 执行搜索
void InvalidateCache(); // 清空搜索缓存Tab切换时调用
void GotoPrev(); // 上一个结果
void GotoNext(); // 下一个结果
void GotoResult(int index); // 跳转到指定结果
void UpdateCountText(); // 更新计数显示
void UpdatePosition(); // 更新位置(居中于父窗口)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
virtual BOOL PreTranslateMessage(MSG* pMsg);
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedPrev();
afx_msg void OnBnClickedNext();
afx_msg void OnBnClickedClose();
afx_msg void OnEnChangeSearch();
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
static const UINT_PTR TIMER_SEARCH = 1; // 延迟搜索定时器
static const UINT SEARCH_DELAY_MS = 500; // 延迟时间(毫秒)
private:
CBrush m_brushEdit; // 输入框背景画刷
CBrush m_brushStatic; // 静态控件背景画刷
};