📄 beautygroupctrlex.h
字号:
#ifndef AFX_BEAUTYGROUPCTRLEX_H__FBI_MAN__INCLUDED_
#define AFX_BEAUTYGROUPCTRLEX_H__FBI_MAN__INCLUDED_
#ifdef SKINBEAUTY_LIB_EXPORT
#define SKINBEAUTY__CLASS __declspec(dllexport)
#else
#define SKINBEAUTY__CLASS __declspec(dllimport)
#endif
//********************************************************************
//*****************************NOTICE*********************************
//the extend-class is bad-designed, with bad-mechanism,
//without any tested. it's just for a demo only,
//and the extend-class just in demo/test-Debug-version,
//if you(client) want, we could send you the source.
//********************************************************************
//********************************************************************
#include <vector>
using std::vector;
#define CLASSNAME_GQGROUPCTRL _T("SKIN_BEAUTY_GROUPCTRL_EX")
#define WM_GROUPCTRL_RBUTTONUP 666
// 组信息结构
class TGroupInfo
{
public:
TGroupInfo():m_szName(_T("")), m_pWnd(NULL){}
virtual ~TGroupInfo(){}
public:
CString m_szName; // 组名称
CWnd *m_pWnd; // 组窗口指针
};
// 分组控件
class SKINBEAUTY__CLASS CBeautyGroupCtrlEx : public CWnd
{
// Construction
public:
CBeautyGroupCtrlEx();
// Implementation
public:
virtual ~CBeautyGroupCtrlEx();
// Generated message map functions
protected:
//{{AFX_MSG(CBeautyGroupCtrlEx)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnDestroy();
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
const unsigned short * GetItemText(int iIndex); // 获取指定索引组的名称
const unsigned short * GetSelectText(); // 获取当前选中的组名
void SetMsgWnd(CWnd *pMsgWnd); // 设置消息处理窗口
void SetFontColor(COLORREF clrFont); // 设置前景色
virtual BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT &rect,
CWnd *pParentWnd, UINT uID);
bool AddOneGroup(TCHAR* szName, CWnd *pWnd = NULL); // 添加一组
bool SetCurGroup(int iIndex); // 设置当前组,通过索引
bool SetCurGroup(TCHAR* szName); // 设置当前组,通过名称
static bool LoadFace(TCHAR* szNormal, TCHAR* szOver, TCHAR* szDown); // 加载皮肤
void EnableBorder(BOOL bHaveBorder); // 显示边框色
void SetBorderColor(COLORREF clrBorder); // 设置边框色
void SetBackColor(COLORREF clrBack); // 设置背景色
protected:
void DrawGroupText(CDC *pDC, CString szName, CRect rtRect); // 画组名称
BOOL RegisterWindowClass(); // 注册窗口类
void DrawCtrl(CDC *pDC); // 画控件
void DrawBorders(CDC *pDC); // 画控件边框
void DrawBack(CDC *pDC); // 画控件背景
void DrawGroups(CDC *pDC); // 画所有组
void DrawOneGroupNormal(CDC *pDC, CRect &rtRect); // 画一个正常状态下的组
void DrawOneGroupOver(CDC *pDC, CRect &rtRect); // 画一个鼠标over下的组
void DrawOneGroupDown(CDC *pDC, CRect &rtRect); // 画一个鼠标按下的组
void GetIndexRect(int iIndex, CRect &rRect); // 获取指定索引的矩形坐标
void ChangeSize(); // 窗体变化处理函数
void HandleDestroy(); // 窗体销毁处理函数
void SetOver(int iIndex); // 设置当前Over的索引
void SetDown(int iIndex); // 设置当前鼠标按下的索引
private:
BOOL m_bHide; // 2次点击同一个按钮隐藏或显示窗口
vector<TGroupInfo*> m_vecGroups; // 组信息列表
int m_iOver; // 当前over的索引
int m_iDown; // 当前鼠标按下的索引
int m_iSel; // 当前被展开的组索引
COLORREF m_clrFont; // 字体颜色
COLORREF m_clrBack; // 背景色
COLORREF m_clrBorder; // 边框色
BOOL m_bHaveBorder; // 是否有边框
static CBitmap * m_pbmpNormal; // 正常状态下组的背景
static CBitmap * m_pbmpOver; // 鼠标over时的组的背景
static CBitmap * m_pbmpDown; // 鼠标按下的组的背景
CRect m_rtClient; // 客户区大小
CWnd *m_pMsg; // 消息处理窗口
CWnd *m_selfWnd; //记录自己的窗口
void OnNodeLDBDown(WPARAM wParam, LPARAM lParam);
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
};
#endif //AFX_BEAUTYGROUPCTRLEX_H__FBI_MAN__INCLUDED_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -