FLImaging 7.8.25.3
GUIMenuBar.h
1#pragma once
2#include "DefinitionsGUI.h"
3#include "DefinitionsGUIResource.h"
4#include <functional>
5
14
16namespace FLImaging
17{
19 namespace GUI
20 {
21 class CGUIMainFrameTabCtrl;
23 class CGUIMenuBarMDITab;
24
25 typedef std::function<void(void*)> CMenuBarCallback;
26 #define MakeMenuBarCallback [=](void* pItem) -> void
27
36 class FL_EXPORT CGUIMenuBar : public CMFCMenuBar, public Base::CFLBase
37 {
38 public:
39 CGUIMenuBar();
40 virtual ~CGUIMenuBar();
41
42 public:
52 virtual void OnFillBackground(CDC* pDC);
53
67 virtual void DrawLogo(Gdiplus::Graphics& memG, const CRect& rcDst, COLORREF clrBg);
68
78 virtual void SetMinWidth(int32_t i32Minwidth);
79
89 virtual int32_t GetMinWidth() const;
90
100 virtual void SetTitleRectMinWidth(int32_t i32Minwidth);
101
111 virtual int32_t GetTitleRectMinWidth() const;
112
122 virtual void SetLeftItemMinPosX(int32_t i32Min);
123
133 virtual int32_t GetLeftItemMinPosX() const;
134
144 virtual void SetButtonWidth(int32_t i32Width);
145
155 virtual int32_t GetButtonWidth() const;
156
166 virtual CRect GetTitleBarRect() const;
167
177 virtual void SetTitleBarRect(CRect rtTitleBar);
178
188 virtual int GetHitButton() const;
189
199 virtual CWnd* GetMovableParent();
200
212 virtual int HitTest(CPoint point) override;
213
225 virtual void SetHitArea(EGUIMenuBarHitArea eHitArea);
226
239
255 virtual CGUIMenuBarUserDefinedInfo* GetHitUserDefinedInfo(CPoint ptClient) const;
256
270 virtual CGUIMenuBarMDITab* GetHitMDITab() const;
271
281 virtual void SetToolTipText(const Base::CFLString<wchar_t>& strToolTipText);
282
292 virtual void SetCurrentModelNameBkColor(COLORREF clrBk);
293
303 virtual COLORREF GetCurrentModelNameBkColor() const;
304
314 virtual void SetCurrentModelNameTextColor(COLORREF clrText);
315
325 virtual COLORREF GetCurrentModelNameTextColor() const;
326
336 virtual void SetCurrentModelNameRect(CRect rtTitleBar);
337
347 virtual CRect GetCurrentModelNameRect() const;
348
358 virtual void ShowCurrentModelName(bool bShow);
359
369 virtual bool IsCurrentModelNameVisible() const;
370
380 virtual void SetCurrentUserIDBkColor(COLORREF clrBk);
381
391 virtual COLORREF GetCurrentUserIDBkColor() const;
392
402 virtual void SetCurrentUserIDTextColor(COLORREF clrText);
403
413 virtual COLORREF GetCurrentUserIDTextColor() const;
414
424 virtual void SetCurrentUserIDRect(CRect rtTitleBar);
425
435 virtual CRect GetCurrentUserIDRect() const;
436
446 virtual void ShowCurrentUserID(bool bShow);
447
457 virtual bool IsCurrentUserIDVisible() const;
458
468 virtual void ShowLogo(bool bShow);
469
479 virtual bool IsLogoVisible() const;
480
494 void EnableSystemButtons(bool bMinimize, bool bMaximize, bool bClose);
495
505 void EnableMinimizeButton(bool bEnable);
506
516 void EnableMaximizeButton(bool bEnable);
517
527 void EnableCloseButton(bool bEnable);
528
539
550
561
583 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);
584
597
619 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);
620
633
645 virtual int32_t FindMenuButtonIndex(const Base::CFLString<wchar_t>& flsMenuName) const;
646
656 virtual int32_t GetUserDefinedInfoCount() const;
657
668
679
690
701
713 virtual CGUIMenuBarUserDefinedInfo* GetUserDefinedInfoAt(int32_t i32Index) const;
714
726 virtual int32_t GetUserDefinedInfoIndex(const CGUIMenuBarUserDefinedInfo* pUDI) const;
727
751 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);
752
766 virtual const CResult SetUserDefinedInfoAt(int32_t i32Index, const CGUIMenuBarUserDefinedInfo& refUDI);
767
791 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);
792
806 virtual const CResult InsertUserDefinedInfoAt(int32_t i32Index, const CGUIMenuBarUserDefinedInfo& refUDI);
807
819 virtual const CResult RemoveUserDefinedInfoAt(int32_t i32Index);
820
831
832 virtual void OnReceiveBroadcast(const Base::CBroadcastMessage* pMessage) override;
833
834 virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL, int nIndex = -1, UINT uiID = (UINT)-1) override;
835 virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL, int nIndex = -1, UINT uiID = (UINT)-1) override;
836
837 DeclareGetClassType();
838
839 protected:
840 // Color
841 Gdiplus::Color m_crBackground;
842 Gdiplus::Color m_crText;
843 COLORREF m_clrBackgroundCurrentModel;
844 COLORREF m_clrTextCurrentModel;
845 COLORREF m_clrBackgroundCurrentUserID;
846 COLORREF m_clrTextCurrentUserID;
847
848 bool m_bMoving;
849
850 Base::CFLString<wchar_t> m_strTitle;
851 bool m_bLButtonDown;
852 bool m_bLButtonDblClk;
853 bool m_bMouseDragMaximize;
854 CPoint m_ptDragStart;
855 CRect m_rtOrgWindow;
856 CRect m_rtClient;
857
858 int32_t m_i32ButtonWidth;
859 int32_t m_i32ButtonHeight;
860 int32_t m_i32MinWidth;
861 int32_t m_i32ItemWidthLeft;
862 int32_t m_i32LeftItemMinPosX;
863 int32_t m_i32TitleBarMinWidth;
864 int32_t m_i32ItemWidthRight;
865 int32_t m_i32ItemCountRight; // CLOSE, MAXIMIZE, MINIMIZE button
866 int32_t m_i32ItemCount;
867 int32_t m_i32LeftStartPos;
868
869 int32_t m_i32HitButton;
870 EGUIMenuBarHitArea m_eHitArea;
871
872 int32_t m_i32AnimationIdx;
873 int32_t m_i32AnimationIdxDirection;
874 unsigned char m_crTitleBk;
875 Gdiplus::Bitmap* m_pLogoImage;
876 int32_t m_i32BmpWidth, m_i32BmpHeight;
877 CRect m_rtTitleBar;
878 CRect m_rtTitleBarPrev;
879 CRect m_rtClose, m_rtRestore, m_rtMinimize;
880 CRect m_rtInfoCurrentModelName;
881 CRect m_rtInfoCurrentUserID;
882
883 CWnd* m_pParent;
884 bool m_bInit;
885 bool m_bAboutToMaximize;
886
887 CPoint m_ptPrevMouse;
888 double m_f64MoveThreshold;
889 double m_f64MoveDistance;
890
891 CRect m_rtMainFrame;
892 std::vector<unsigned char> m_vctLogoBkClr;
893
894 CGUIMainFrameTabCtrl* m_pMainFrameTabCtrl;
895 bool m_bTrackMouse;
896
897 CToolTipCtrl m_ToolTip;
898 Base::CFLString<wchar_t> m_strToolTipText;
899
900 bool m_bHitTimerInstalled;
901 bool m_bShowLogo;
902 bool m_bEnableBtnMinimize;
903 bool m_bEnableBtnMaximize;
904 bool m_bEnableBtnClose;
905
906 protected:
907 void DoPaint(CDC* pDCPaint);
908 void DrawTitle(CDC* pDCPaint);
909 void UpdateAnimation();
910 const CResult LoadLogoImage(const Base::CFLString<wchar_t>& strLogoPath);
911 const CResult LoadLogoImage(UINT nIDResource, EImageResourceType eImageResourceType = EImageResourceType_PNG, HINSTANCE hInst = NULL);
912
913 public:
914 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
915 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
916 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
917 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
918 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
919 afx_msg void OnMouseLeave();
920 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
921 afx_msg void OnKillFocus(CWnd* pNewWnd);
922 afx_msg void OnSize(UINT nType, int cx, int cy);
923 afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
924 afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
925 afx_msg void OnDestroy();
926 afx_msg void OnTimer(UINT_PTR nIDEvent);
927 DECLARE_MESSAGE_MAP()
928 virtual BOOL PreTranslateMessage(MSG* pMsg)override;
929
930 friend class CGUIMainFrame;
931 friend class CGUIMenuItemLogIn;
932 friend class CGUIManagerMainFrameMenuBar;
933 };
934 }
935}
Broadcast message class.
Definition BroadcastMessage.h:27
Top-level base class of FLImaging.
Definition FLBase.h:36
Template type string class.
Definition FLString.h:34
FLImaging module execution result object.
Definition ResultsDef.h:1704
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)
Inserts a user-defined info item at the front of the list. Items are added to the left of the current...
virtual void OnFillBackground(CDC *pDC)
Called to fill the background of the menu bar.
virtual int32_t GetButtonWidth() const
Returns the width of the system buttons.
virtual int GetHitButton() const
Returns the index of the currently hit system button.
virtual CGUIMenuBarUserDefinedInfo * GetFrontUserDefinedInfo() const
Returns a pointer to the first user-defined info item without removing it.
virtual COLORREF GetCurrentModelNameBkColor() const
Returns the background color of the current model name area.
virtual void SetToolTipText(const Base::CFLString< wchar_t > &strToolTipText)
Sets the tooltip text displayed when hovering over the menu bar.
virtual void SetCurrentModelNameTextColor(COLORREF clrText)
Sets the text color of the current model name area.
virtual CRect GetCurrentModelNameRect() const
Returns the rectangle of the current model name area.
virtual CGUIMenuBarMDITab * GetHitMDITab() const
Returns the MDI tab object that is currently hit. Use this method when GetHitArea() returns EGUIMenuB...
virtual void ShowCurrentUserID(bool bShow)
Shows or hides the current user ID area.
virtual CWnd * GetMovableParent()
Returns the parent window that can be moved by dragging the menu bar.
virtual bool IsLogoVisible() const
Returns whether the logo is visible.
virtual CGUIMenuBarUserDefinedInfo * PopBackUserDefinedInfo()
Removes and returns the last user-defined info item from the list.
virtual void SetLeftItemMinPosX(int32_t i32Min)
Sets the minimum X position of the leftmost menu item.
virtual bool IsCurrentUserIDVisible() const
Returns whether the current user ID area is visible.
virtual CGUIMenuBarUserDefinedInfo * GetBackUserDefinedInfo() const
Returns a pointer to the last user-defined info item without removing it.
virtual void SetCurrentUserIDBkColor(COLORREF clrBk)
Sets the background color of the current user ID area.
virtual CGUIMenuBarUserDefinedInfo * GetHitUserDefinedInfo(CPoint ptClient) const
Returns the user-defined info object at the given client coordinate. Use this method when GetHitArea(...
virtual void ShowCurrentModelName(bool bShow)
Shows or hides the current model name area.
virtual void DrawLogo(Gdiplus::Graphics &memG, const CRect &rcDst, COLORREF clrBg)
Draws the logo on the menu bar.
void EnableCloseButton(bool bEnable)
Enables or disables the close button.
virtual const CResult ClearUserDefinedInfo()
Removes all user-defined info items from the list.
virtual void SetHitArea(EGUIMenuBarHitArea eHitArea)
Sets the current hit area type of the menu bar.
bool IsCloseButtonEnabled() const
Returns whether the close button is enabled.
virtual void SetCurrentModelNameRect(CRect rtTitleBar)
Sets the rectangle of the current model name area.
virtual void PushBackUserDefinedInfo(const CGUIMenuBarUserDefinedInfo &refUDI)
Appends a user-defined info item to the back of the list using a CGUIMenuBarUserDefinedInfo object....
bool IsMinimizeButtonEnabled() const
Returns whether the minimize button is enabled.
virtual void SetButtonWidth(int32_t i32Width)
Sets the width of the system buttons (minimize, maximize, close).
virtual void ShowLogo(bool bShow)
Shows or hides the logo.
void EnableSystemButtons(bool bMinimize, bool bMaximize, bool bClose)
Enables or disables the system buttons (minimize, maximize, close) simultaneously.
virtual int32_t GetTitleRectMinWidth() const
Returns the minimum width of the title rect area.
virtual void SetCurrentModelNameBkColor(COLORREF clrBk)
Sets the background color of the current model name area.
virtual void SetTitleBarRect(CRect rtTitleBar)
Sets the rectangle of the title bar area.
virtual void SetTitleRectMinWidth(int32_t i32Minwidth)
Sets the minimum width of the title rect area.
bool IsMaximizeButtonEnabled() const
Returns whether the maximize button is enabled.
virtual int HitTest(CPoint point) override
Tests which area of the menu bar is hit at the given point.
virtual COLORREF GetCurrentUserIDTextColor() const
Returns the text color of the current user ID area.
void EnableMaximizeButton(bool bEnable)
Enables or disables the maximize button.
virtual COLORREF GetCurrentUserIDBkColor() const
Returns the background color of the current user ID area.
virtual void SetMinWidth(int32_t i32Minwidth)
Sets the minimum width of the menu bar.
virtual EGUIMenuBarHitArea GetHitArea() const
Returns the current hit area type of the menu bar.
virtual const CResult RemoveUserDefinedInfoAt(int32_t i32Index)
Removes the user-defined info item at the specified index.
virtual int32_t FindMenuButtonIndex(const Base::CFLString< wchar_t > &flsMenuName) const
Returns the index of a menu button with the given name.
virtual void PushFrontUserDefinedInfo(const CGUIMenuBarUserDefinedInfo &refUDI)
Inserts a user-defined info item at the front of the list using a CGUIMenuBarUserDefinedInfo object....
virtual const CResult InsertUserDefinedInfoAt(int32_t i32Index, const CGUIMenuBarUserDefinedInfo &refUDI)
Inserts a user-defined info item at the specified index using a CGUIMenuBarUserDefinedInfo object.
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)
Inserts a user-defined info item at the specified index.
virtual int32_t GetUserDefinedInfoIndex(const CGUIMenuBarUserDefinedInfo *pUDI) const
Returns the index of the specified user-defined info item in the list.
void EnableMinimizeButton(bool bEnable)
Enables or disables the minimize button.
virtual CRect GetCurrentUserIDRect() const
Returns the rectangle of the current user ID area.
virtual CRect GetTitleBarRect() const
Returns the rectangle of the title bar area.
virtual int32_t GetMinWidth() const
Returns the minimum width of the menu bar.
virtual CGUIMenuBarUserDefinedInfo * PopFrontUserDefinedInfo()
Removes and returns the first user-defined info item from the list.
virtual int32_t GetUserDefinedInfoCount() const
Returns the number of user-defined info items.
virtual bool IsCurrentModelNameVisible() const
Returns whether the current model name area is visible.
virtual void SetCurrentUserIDRect(CRect rtTitleBar)
Sets the rectangle of the current user ID area.
virtual void SetCurrentUserIDTextColor(COLORREF clrText)
Sets the text color of the current user ID area.
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)
Appends a user-defined info item to the back of the list. Items are added to the left of the current ...
virtual COLORREF GetCurrentModelNameTextColor() const
Returns the text color of the current model name area.
virtual const CResult SetUserDefinedInfoAt(int32_t i32Index, const CGUIMenuBarUserDefinedInfo &refUDI)
Replaces the user-defined info item at the specified index with a CGUIMenuBarUserDefinedInfo object.
virtual void OnReceiveBroadcast(const Base::CBroadcastMessage *pMessage) override
Callback function. A function that receives a BroadcastMessage.
virtual CGUIMenuBarUserDefinedInfo * GetUserDefinedInfoAt(int32_t i32Index) const
Returns the user-defined info item at the specified index.
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)
Replaces the user-defined info item at the specified index with new values.
virtual int32_t GetLeftItemMinPosX() const
Returns the minimum X position of the leftmost menu item.
Represents a single user-defined info item displayed in the menu bar. Each item renders as a text box...
Definition GUIMenuBarUserDefinedInfo.h:36
Definition D2DObject.h:12
EGUIStringTrimming
Cut option if string is out of layout square.
Definition DefinitionsGUI.h:14020
@ EGUIStringTrimming_EllipsisCharacter
Specifies that the string is broken at the boundary of the last character within the layout rectangle...
Definition DefinitionsGUI.h:14051
EGUIMenuBarHitArea
The area where the mouse is located on the menu bar.
Definition DefinitionsGUI.h:8642
EImageResourceType
Image resource type enumeration.
Definition DefinitionsGUIResource.h:43
EGUIAlignment
Alignment information.
Definition DefinitionsGUI.h:13858
@ EGUIAlignment_CENTER_CENTER
Center alignment.
Definition DefinitionsGUI.h:13961