FLImaging 6.6.27.1
GUIStatusBar.h
1#pragma once
2#include <afxstatusbar.h>
3#include <unordered_set>
4#include <unordered_map>
5
6namespace FLImaging
7{
8 namespace GUI
9 {
10 class FL_EXPORT CGUIStatusBar : public CMFCStatusBar
11 {
12 public:
13 CGUIStatusBar();
14 virtual ~CGUIStatusBar();
15
16 public:
17 bool Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, UINT nID = AFX_IDW_STATUS_BAR);
18
19 virtual BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE);
20 void SetPaneTextColorNonUpdate(int nIndex, COLORREF clrText = (COLORREF)-1 /* Default*/);
21 void SetPaneInfoNonUpdate(int nIndex, UINT nID, UINT nStyle, int cxWidth);
22
23 virtual void ShowItem(int32_t i32Index, bool bShow);
24 virtual bool IsItemVisible(int32_t i32Index) const;
25
26 virtual const CResult SetItemElasticMinimumWidth(int32_t i32Index, int32_t i32MinimumWidth);
27 virtual const CResult ClearItemElasticMinimumWidth(int32_t i32Index);
28 virtual const CResult GetItemElasticMinimumWidth(int32_t i32Index, int32_t& i32MinimumWidth) const;
29
30 virtual void NeedToUpdateLayout();
31 virtual void Update();
32
33 void LockUpdate();
34 void UnlockUpdate();
35 virtual void RecalcLayout() override;
36
37 protected:
38 virtual void DoPaint(CDC* pDC) override;
39 virtual void OnDrawPane(CDC* pDC, CMFCStatusBarPaneInfo* pPane) override;
40
41 virtual void JudgeUpdateAvailable();
42 virtual bool IsUpdateAvailable();
43 static unsigned __stdcall InternalThreadRemainingUpdate(void* pParam);
44 void InitializeThreadRemainingUpdate();
45 void TerminateThreadRemainingUpdate();
46
47 protected:
48 CMFCStatusBarPaneInfo* _FLGetPanePtr(int nIndex);
49
50 bool m_arrBUpdated[1024];
51 bool m_bNeedToUpdateLayout;
52 bool m_bLockUpdate;
53
54 std::unordered_set<int32_t>& m_setHidedItemIndex;
55 std::unordered_map<int32_t, int32_t>& m_mapItemElasticMinimumWidth;
56 Base::CPerformanceCounter m_pcLastUpdateCounter;
57 volatile bool m_bUpdateAvailable;
58 volatile bool m_bUpdateBlocked;
59 volatile bool m_bRemainingUpdateThread;
60 HANDLE m_hThreadRemainingUpdate;
61
62 bool m_bWindowSizeUpdated;
63
64 public:
65
66 bool m_bTerminateApp;
67
68 DECLARE_MESSAGE_MAP()
69 afx_msg void OnNcPaint();
70 afx_msg void OnDestroy();
71
72 friend class CGUIViewImageBase;
73 };
74 }
75}
76
Definition D2DObject.h:12