类WindowsXp 开始菜单[原创]

        

                                                           类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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值