类WindowsXp 开始菜单[原创]

    技术2022-05-11  133

            

                                                               类WindowsXp 开始菜单实现

              作者:深圳软客

                                       

         

     

    一、实现原理:用CWnd   CButton 来实现。

     

     

     

     

     

     

     

     

    主要的类文件为  CyisongMenu .cpp  CyisongMenu.h

     

     

     

     

     

     

     

     

    二、菜单使用方法说明:

    public变量定义

    CYisongMenu   m_GroupMenu;

    CYisongMenu   m_SubGroupMenu;//子菜单

     

     

     

     

     

     

     

     

    b.设置头像和添加菜单项

    m_GroupMenu.SetMenuHeader("我的主菜单",IDI_QQ, TRUE );

    m_GroupMenu.AppendMenuItem(“退出系统”,

                                                              IDC_SUBITEM, //菜单ID

                                                              IDI_ICON1,        // 图标

        NULL,                 //子菜单指针

    MENU_NORMAL|MENU_FONTBOLD//风格参数

    );

     

     

     

     

     

     

     

     

    m_GroupMenu.AppendMenuItem(“功能菜单2”,

                                                              IDC_SUBITEM+1,

                                                              IDI_ICON2,

        NULL,      

    MENU_NORMAL );

         

          继续用AppendMenuItem 添加菜单项,

          c. 完成创建

          m_GroupMenu.CreateGroupMenu(this,CRect(0,0,150,300),IDC_MENU,1,1);

    至此基本完成创建工作,如果还要创建创子菜单用,请回到a处。

     

     

     

     

     

     

     

     

    d.显示菜单项

    在点(x,y)处显示菜单

    m_GroupMenu. ShowMenuPos(x,y, LEFTBOTTOM);

    第三个 数指定(x,y)为菜单的四个角点中的一个。如LEFTBOTTOM即为菜单左下角处在(x,y)的位置。

     

     

     

     

     

     

     

     

    E. 响映菜单项命令

    .cpp 中添加ON_COMMAND_RANGE(IDC_SUBITEM

                                                                     IDC_SUBITEMMAX

                                                                     OnMenuCommand) //消息映射函数

    并在.h 中声明为 void OnMenuCommand(UINT nID)

     

     

     

     

     

     

     

     

    cpp中的函数实现代码为:

          CString StrSelect;

          StrSelect.Format("你选择了第%I功能",nID-IDC_SUBITEM + 1);

          MessageBox(StrSelect,"执行结果");

     

     

     

     

     

     

     

     

    三、主要函数说明

     

     

     

     

     

     

     

     

    原型 :void SetMenuHeader(CString StrTitle ,UINT nID , BOOL bShowHead)

    参数:   StrTitle :头标题  ,nID :图标ID, bShowHead:如要显菜单头则为TRUE

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    原型:  AppendMenuItem(CString StrTitle, int nID, int nIconID, CWnd* pSubMenu,

                                              DWORD dwStyles, CString strTip)

     

     

     

     

     

     

     

    参数:   StrTitle :头标题  ,

                nID :菜单项ID,

                nIconID图标ID,

    pSubMenu: 如有子菜单   pSubMenu为其指针,否则为NULL

     

     

     

     

     

     

     

     

    dwStyles : MENU_NORMAL  一般菜单项

           MENU_FONTBOLD  菜单项字体为粗体

                                  MENU_BORDLINE  为分界线

           MENU_SUBITEM       菜单项有子菜单

                                MENU_CHECKBOX   菜单有CHECK标志    

      原型:  CreateGroupMenu(CWnd *pParent, CRect rcClient, UINT nID, BOOL 

     

     

     

     

     

     

     

                 bShowHead,int nModeIcon)

     

     

     

     

     

     

     

         参数:

     

     

     

     

     

     

     

        pParent:父窗口指针

                 rcClient:显示位置

     nID:窗口ID

    bShowHead: 是否显示菜单头

    nModeIcon: 菜单项图标大小:1:16x16;  2:32x32;     3:48x48

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    此菜单类可应还可用于其它场合,如主菜单,托盘菜单,右鍵快捷菜单等!

    欢迎批评指正并提出意见 !我的联系方法:song_0962#sina.com QQ:34544052

    (转摘请先联系作者)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


    最新回复(0)