Files

131 lines
3.7 KiB
C++

/*---------------------------------------------------------------------------*/
// Author : hiyohiyo
// Mail : hiyohiyo@crystalmark.info
// Web : https://crystalmark.info/
// License : MIT License
/*---------------------------------------------------------------------------*/
#pragma once
#include "ImageFx.h"
class CComboBoxFx : public CComboBox
{
DECLARE_DYNAMIC(CComboBoxFx);
// Constructors
public:
CComboBoxFx();
virtual ~CComboBoxFx();
// Control
public:
BOOL InitControl(int x, int y, int width, int height, double zoomRatio, CDC* bkDC,
LPCWSTR imagePath, int imageCount, DWORD textAlign, int renderMode, BOOL bHighContrast, BOOL m_bDarkMode,
COLORREF bkColor, COLORREF bkColorSelected, COLORREF glassColor, BYTE glassAlpha
);
void SetFontHeight(int height, double zoomRatio, double fontRatio = 1.0);
void SetItemHeightEx(int nIndex, int height, double zoomRatio, double fontRatio = 1.0);
void SetItemHeightAll(int height, double zoomRatio, double fontRatio = 1.0);
void SetMargin(int top, int left, int bottom, int right, double zoomRatio);
CSize GetSize(void);
void SetGlassColor(COLORREF glassColor, BYTE glassAlpha);
void SetAlpha(BYTE alpha);
HWND GetListHwnd();
// Font
void SetFontEx(CString face, int size, int sizeToolTip, double zoomRatio, double fontRatio = 1.0,
COLORREF textColor = RGB(0, 0, 0), COLORREF textColorSelected = RGB(0, 0, 0), LONG fontWeight = FW_NORMAL, BYTE fontRender = CLEARTYPE_NATURAL_QUALITY);
// ToolTip
void SetToolTipText(LPCTSTR pText);
void SetToolTipActivate(BOOL bActivate = TRUE);
void SetToolTipWindowText(LPCTSTR pText);
CString GetToolTipText();
// Mouse
void SetHandCursor(BOOL bHandCuror = TRUE);
protected:
// Draw Control
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
virtual void DrawControl(CString title, CDC* drawDC, LPDRAWITEMSTRUCT lpDrawItemStruct, CBitmap& ctrlBitmap, CBitmap& bkBitmap, int no);
virtual void DrawString(CString title, CDC* drawDC, LPDRAWITEMSTRUCT lpDrawItemStruct, COLORREF textColor);
// Image
BOOL LoadBitmap(LPCTSTR fileName);
BOOL LoadBitmap(HBITMAP hBitmap);
void SetBkReload(void);
BOOL SetBitmap(CBitmap& bitmap);
void LoadCtrlBk(CDC* drawDC);
// ToolTip
void InitToolTip();
virtual BOOL PreTranslateMessage(MSG* pMsg);
// Message Map
DECLARE_MESSAGE_MAP()
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnMouseHover(UINT nFlags, CPoint point);
afx_msg void OnMouseLeave();
afx_msg void OnKillfocus();
afx_msg void OnSetfocus();
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
protected:
// Control
int m_X;
int m_Y;
double m_ZoomRatio;
CSize m_CtrlSize;
CRect m_Margin;
int m_RenderMode;
BOOL m_bHighContrast;
BOOL m_bDarkMode;
BYTE m_FontRender; // For FontComboBoxFx
// Alpha/Glass
BYTE m_Alpha;
COLORREF m_GlassColor;
BYTE m_GlassAlpha;
// Image
CString m_ImagePath;
int m_ImageCount;
CDC* m_BkDC;
CBitmap m_BkBitmap;
BOOL m_bBkBitmapInit;
BOOL m_bBkLoad;
CBitmap m_CtrlBitmap;
CImage m_CtrlImage;
// Font
DWORD m_TextAlign;
CFont m_Font;
CFont m_FontToolTip;
COLORREF m_TextColor;
COLORREF m_TextColorSelected;
COLORREF m_BkColor;
COLORREF m_BkColorSelected;
COLORREF m_TextColorHc;
COLORREF m_TextColorSelectedHc;
COLORREF m_BkColorHc;
COLORREF m_BkColorSelectedHc;
LONG m_FontHeight;
// ToolTip
CToolTipCtrl m_ToolTip;
CString m_ToolTipText;
// Mouse
BOOL m_bHover;
BOOL m_bFocas;
BOOL m_bTrackingNow;
BOOL m_bHandCursor;
// Brush
CBrush m_BkBrush;
};