2#include "DefinitionsGUI.h"
9 class CGUIMainFrameTabCtrl;
10 class CGUIMenuBarUserDefinedInfo;
11 class CGUIMenuBarMDITab;
13 typedef std::function<void(
void*)> CMenuBarCallback;
14 #define MakeMenuBarCallback [=](void* pItem) -> void
16 class FL_EXPORT CGUIMenuBar :
public CMFCMenuBar,
public Base::CFLBase
20 virtual ~CGUIMenuBar();
23 virtual void OnFillBackground(CDC* pDC);
24 virtual void DrawLogo(Gdiplus::Graphics& memG,
const CRect& rcDst, COLORREF clrBg);
26 virtual void SetMinWidth(int32_t i32Minwidth);
27 virtual int32_t GetMinWidth()
const;
29 virtual void SetTitleRectMinWidth(int32_t i32Minwidth);
30 virtual int32_t GetTitleRectMinWidth()
const;
32 virtual void SetLeftItemMinPosX(int32_t i32Min);
33 virtual int32_t GetLeftItemMinPosX()
const;
35 virtual void SetButtonWidth(int32_t i32Width);
36 virtual int32_t GetButtonWidth()
const;
38 virtual CRect GetTitleBarRect()
const;
39 virtual void SetTitleBarRect(CRect rtTitleBar);
40 virtual int GetHitButton()
const;
42 virtual CWnd* GetMovableParent();
44 virtual int HitTest(CPoint point)
override;
46 virtual void SetHitArea(EGUIMenuBarHitArea eHitArea);
49 virtual CGUIMenuBarUserDefinedInfo* GetHitUserDefinedInfo(CPoint ptClient)
const;
51 virtual CGUIMenuBarMDITab* GetHitMDITab()
const;
53 virtual void SetToolTipText(
const Base::CFLString<wchar_t>& strToolTipText);
56 virtual void SetCurrentModelNameBkColor(COLORREF clrBk);
57 virtual COLORREF GetCurrentModelNameBkColor()
const;
59 virtual void SetCurrentModelNameTextColor(COLORREF clrText);
60 virtual COLORREF GetCurrentModelNameTextColor()
const;
62 virtual void SetCurrentModelNameRect(CRect rtTitleBar);
63 virtual CRect GetCurrentModelNameRect()
const;
65 virtual void ShowCurrentModelName(
bool bShow);
66 virtual bool IsCurrentModelNameVisible()
const;
69 virtual void SetCurrentUserIDBkColor(COLORREF clrBk);
70 virtual COLORREF GetCurrentUserIDBkColor()
const;
72 virtual void SetCurrentUserIDTextColor(COLORREF clrText);
73 virtual COLORREF GetCurrentUserIDTextColor()
const;
75 virtual void SetCurrentUserIDRect(CRect rtTitleBar);
76 virtual CRect GetCurrentUserIDRect()
const;
78 virtual void ShowCurrentUserID(
bool bShow);
79 virtual bool IsCurrentUserIDVisible()
const;
81 virtual void ShowLogo(
bool bShow);
82 virtual bool IsLogoVisible()
const;
84 void EnableSystemButtons(
bool bMinimize,
bool bMaximize,
bool bClose);
85 void EnableMinimizeButton(
bool bEnable);
86 void EnableMaximizeButton(
bool bEnable);
87 void EnableCloseButton(
bool bEnable);
88 bool IsMinimizeButtonEnabled()
const;
89 bool IsMaximizeButtonEnabled()
const;
90 bool IsCloseButtonEnabled()
const;
93 virtual void PushBackUserDefinedInfo(
const Base::CFLString<wchar_t>& strInfo, COLORREF clrBackground =
RGB(80, 80, 80), COLORREF clrText =
RGB(255, 255, 255),
bool bShow =
true, EGUIAlignment eAlign = EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming = EGUIStringTrimming_EllipsisCharacter);
94 virtual void PushBackUserDefinedInfo(
const CGUIMenuBarUserDefinedInfo& refUDI);
96 virtual void PushFrontUserDefinedInfo(
const Base::CFLString<wchar_t>& strInfo, COLORREF clrBackground =
RGB(80, 80, 80), COLORREF clrText =
RGB(255, 255, 255),
bool bShow =
true, EGUIAlignment eAlign = EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming = EGUIStringTrimming_EllipsisCharacter);
97 virtual void PushFrontUserDefinedInfo(
const CGUIMenuBarUserDefinedInfo& refUDI);
99 virtual int32_t FindMenuButtonIndex(
const Base::CFLString<wchar_t>& flsMenuName)
const;
100 virtual int32_t GetUserDefinedInfoCount()
const;
101 virtual CGUIMenuBarUserDefinedInfo* PopBackUserDefinedInfo();
102 virtual CGUIMenuBarUserDefinedInfo* GetBackUserDefinedInfo()
const;
103 virtual CGUIMenuBarUserDefinedInfo* PopFrontUserDefinedInfo();
104 virtual CGUIMenuBarUserDefinedInfo* GetFrontUserDefinedInfo()
const;
106 virtual CGUIMenuBarUserDefinedInfo* GetUserDefinedInfoAt(int32_t i32Index)
const;
107 virtual int32_t GetUserDefinedInfoIndex(
const CGUIMenuBarUserDefinedInfo* pUDI)
const;
109 virtual const CResult SetUserDefinedInfoAt(int32_t i32Index,
const Base::CFLString<wchar_t>& strInfo, COLORREF clrBackground =
RGB(80, 80, 80), COLORREF clrText =
RGB(255, 255, 255),
bool bShow =
true, EGUIAlignment eAlign = EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming = EGUIStringTrimming_EllipsisCharacter);
110 virtual const CResult SetUserDefinedInfoAt(int32_t i32Index,
const CGUIMenuBarUserDefinedInfo& refUDI);
112 virtual const CResult InsertUserDefinedInfoAt(int32_t i32Index,
const Base::CFLString<wchar_t>& strInfo, COLORREF clrBackground =
RGB(80, 80, 80), COLORREF clrText =
RGB(255, 255, 255),
bool bShow =
true, EGUIAlignment eAlign = EGUIAlignment_CENTER_CENTER, EGUIStringTrimming eStringTrimming = EGUIStringTrimming_EllipsisCharacter);
113 virtual const CResult InsertUserDefinedInfoAt(int32_t i32Index,
const CGUIMenuBarUserDefinedInfo& refUDI);
115 virtual const CResult RemoveUserDefinedInfoAt(int32_t i32Index);
116 virtual const CResult ClearUserDefinedInfo();
118 virtual void OnReceiveBroadcast(
const Base::CBroadcastMessage* pMessage)
override;
120 virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL,
int nIndex = -1, UINT uiID = (UINT)-1)
override;
121 virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL,
int nIndex = -1, UINT uiID = (UINT)-1)
override;
123 DeclareGetClassType();
127 Gdiplus::Color m_crBackground;
128 Gdiplus::Color m_crText;
129 COLORREF m_clrBackgroundCurrentModel;
130 COLORREF m_clrTextCurrentModel;
131 COLORREF m_clrBackgroundCurrentUserID;
132 COLORREF m_clrTextCurrentUserID;
136 Base::CFLString<wchar_t> m_strTitle;
138 bool m_bLButtonDblClk;
139 bool m_bMouseDragMaximize;
140 CPoint m_ptDragStart;
144 int32_t m_i32ButtonWidth;
145 int32_t m_i32ButtonHeight;
146 int32_t m_i32MinWidth;
147 int32_t m_i32ItemWidthLeft;
148 int32_t m_i32LeftItemMinPosX;
149 int32_t m_i32TitleBarMinWidth;
150 int32_t m_i32ItemWidthRight;
151 int32_t m_i32ItemCountRight;
152 int32_t m_i32ItemCount;
153 int32_t m_i32LeftStartPos;
155 int32_t m_i32HitButton;
158 int32_t m_i32AnimationIdx;
159 int32_t m_i32AnimationIdxDirection;
160 unsigned char m_crTitleBk;
161 Gdiplus::Bitmap* m_pLogoImage;
162 int32_t m_i32BmpWidth, m_i32BmpHeight;
164 CRect m_rtTitleBarPrev;
165 CRect m_rtClose, m_rtRestore, m_rtMinimize;
166 CRect m_rtInfoCurrentModelName;
167 CRect m_rtInfoCurrentUserID;
171 bool m_bAboutToMaximize;
173 CPoint m_ptPrevMouse;
174 double m_f64MoveThreshold;
175 double m_f64MoveDistance;
178 std::vector<unsigned char> m_vctLogoBkClr;
180 CGUIMainFrameTabCtrl* m_pMainFrameTabCtrl;
183 CToolTipCtrl m_ToolTip;
184 Base::CFLString<wchar_t> m_strToolTipText;
186 bool m_bHitTimerInstalled;
188 bool m_bEnableBtnMinimize;
189 bool m_bEnableBtnMaximize;
190 bool m_bEnableBtnClose;
193 void DoPaint(CDC* pDCPaint);
194 void DrawTitle(CDC* pDCPaint);
195 void UpdateAnimation();
196 void LoadLogoImage(
const Base::CFLString<wchar_t>& strLogoPath);
199 afx_msg
int OnCreate(LPCREATESTRUCT lpCreateStruct);
200 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
201 afx_msg
void OnLButtonDown(UINT nFlags, CPoint point);
202 afx_msg
void OnLButtonUp(UINT nFlags, CPoint point);
203 afx_msg
void OnMouseMove(UINT nFlags, CPoint point);
204 afx_msg
void OnMouseLeave();
205 afx_msg
void OnLButtonDblClk(UINT nFlags, CPoint point);
206 afx_msg
void OnKillFocus(CWnd* pNewWnd);
207 afx_msg
void OnSize(UINT nType,
int cx,
int cy);
208 afx_msg
void OnMButtonUp(UINT nFlags, CPoint point);
209 afx_msg
void OnRButtonUp(UINT nFlags, CPoint point);
210 afx_msg
void OnDestroy();
211 afx_msg
void OnTimer(UINT_PTR nIDEvent);
212 DECLARE_MESSAGE_MAP()
213 virtual BOOL PreTranslateMessage(MSG* pMsg)override;
215 friend class CGUIMainFrame;
216 friend class CGUIMenuItemLogIn;
Definition D2DObject.h:12
EGUIMenuBarHitArea
Menu bar 위에서 마우스가 위치한 영역입니다.
Definition DefinitionsGUI.h:4893
@ RGB
Definition DefinitionsBase.h:2630