⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menuxp.h

📁 网络入侵检测系统 网络入侵检测系统 网络入侵检测系统
💻 H
字号:
///////////////////////////////////////////////////////////////////////////////
//
// MenuXP.h : header file
//
///////////////////////////////////////////////////////////////////////////////

#pragma once

#include <afxtempl.h>

///////////////////////////////////////////////////////////////////////////////
class CImgDesc
{
public:
    HIMAGELIST m_hImgList;
    int        m_nIndex;

    CImgDesc (HIMAGELIST hImgList = NULL, int nIndex = 0) : m_hImgList (hImgList), m_nIndex (nIndex)
    {
    }
};

///////////////////////////////////////////////////////////////////////////////
class CMenuXP : public CMenu
{
// Attributes
public:
    static CMap <int, int, CString, CString&> m_sCaptions;
    static CMap <int, int, CImgDesc, CImgDesc&> m_Images;

// Operations
public:
    static void SetWinXPStyle (HMENU hMenu, CWnd* pWnd = NULL);
    static bool IsOwnerDrawn (HMENU hMenu);
    static void OnMeasureItem (MEASUREITEMSTRUCT* pMeasureItemStruct);
    static void OnDrawItem (DRAWITEMSTRUCT* pDrawItemStruct);
    static LRESULT OnMenuChar (HMENU hMenu, UINT nChar, UINT nFlags);
};

#define DECLARE_MENUXP()                                                             \
    protected:                                                                       \
    afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);     \
    afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct); \
    afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);          \
    afx_msg LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu);

#define ON_MENUXP_MESSAGES() \
    ON_WM_INITMENUPOPUP()    \
    ON_WM_MEASUREITEM()      \
    ON_WM_DRAWITEM()         \
    ON_WM_MENUCHAR()

#define IMPLEMENT_MENUXP(theClass, baseClass, bFlag)                               \
    void theClass::OnInitMenuPopup (CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu) \
    {                                                                              \
        baseClass::OnInitMenuPopup (pPopupMenu, nIndex, bSysMenu);                 \
                                                                                   \
        if ( bFlag && !bSysMenu )                                                  \
        {                                                                          \
            CMenuXP::SetWinXPStyle (pPopupMenu->m_hMenu, this);                    \
        }                                                                          \
    }                                                                              \
    void theClass::OnMeasureItem (int, LPMEASUREITEMSTRUCT lpMeasureItemStruct)    \
    {                                                                              \
        CMenuXP::OnMeasureItem (lpMeasureItemStruct);                              \
    }                                                                              \
    void theClass::OnDrawItem (int, LPDRAWITEMSTRUCT lpDrawItemStruct)             \
    {                                                                              \
        CMenuXP::OnDrawItem (lpDrawItemStruct);                                    \
    }                                                                              \
    LRESULT theClass::OnMenuChar (UINT nChar, UINT nFlags, CMenu* pMenu)           \
    {                                                                              \
        if ( CMenuXP::IsOwnerDrawn (pMenu->m_hMenu) )                              \
        {                                                                          \
            return CMenuXP::OnMenuChar (pMenu->m_hMenu, nChar, nFlags);            \
        }                                                                          \
        return baseClass::OnMenuChar (nChar, nFlags, pMenu);                       \
    }

///////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -