MenuDlg.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // MenuDlg.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "MenuDlg.h"
  5. #include "Resource.h"
  6. // CMenuDlg 对话框
  7. IMPLEMENT_DYNAMIC(CMenuDlg, CDlgControlItem)
  8. CMenuDlg::CMenuDlg(CWnd* pParent /*=NULL*/)
  9. : CDlgControlItem(IDD_MENU, pParent)
  10. {
  11. }
  12. CMenuDlg::~CMenuDlg()
  13. {
  14. }
  15. void CMenuDlg::DoDataExchange(CDataExchange* pDX)
  16. {
  17. CDlgControlItem::DoDataExchange(pDX);
  18. }
  19. BEGIN_MESSAGE_MAP(CMenuDlg, CDlgControlItem)
  20. ON_WM_RBUTTONDOWN()
  21. END_MESSAGE_MAP()
  22. // CMenuDlg 消息处理程序
  23. BOOL CMenuDlg::OnInitDialog()
  24. {
  25. CDlgControlItem::OnInitDialog();
  26. //m_MenuBar.LoadMenu(IDR_MENU2);
  27. //SetMenu(&m_MenuBar);
  28. return TRUE; // return TRUE unless you set the focus to a control
  29. // 异常: OCX 属性页应返回 FALSE
  30. }
  31. void CMenuDlg::OnRButtonDown( UINT nFlags, CPoint point )
  32. {
  33. //构造菜单
  34. CSkinMenu MainMenu;
  35. MainMenu.CreatePopupMenu();
  36. //创建子菜单
  37. CSkinMenu SubMenu;
  38. SubMenu.CreateMenu();
  39. SubMenu.AppendMenu(3000,TEXT("主面板"),TEXT("Res\\Status\\busy.png"),0,MF_POPUP);
  40. SubMenu.AppendMenu(3001,TEXT("设置"),TEXT("Res\\Status\\busy.png"),0,MF_POPUP);
  41. SubMenu.AppendMenu(3002,TEXT("QQ消息管理器"),TEXT("Res\\Status\\busy.png"),0,MF_POPUP);
  42. SubMenu.SetMenuBarImage(TEXT("Res\\Menu\\menu_left_bg.png"),&CRect(2,2,2,2));
  43. SubMenu.SetMenuBackImage(TEXT("Res\\Menu\\menu_right_bg.png"),&CRect(2,2,2,2));
  44. SubMenu.SetMenuHovenImage(TEXT("Res\\Menu\\menu_selected.png"),&CRect(2,2,2,2));
  45. SubMenu.SetSeparatorImage(TEXT("Res\\Menu\\menu_separtor.png"),&CRect(2,2,2,2));
  46. SubMenu.SetCheckImage(TEXT("Res\\Menu\\menu_check.png"));
  47. //建立菜单
  48. MainMenu.AppendMenu(4000,TEXT("我在线上"),TEXT("Res\\Status\\imonline.png"),TEXT("Res\\Status\\invisible.png"),MF_POPUP);
  49. MainMenu.AppendMenu(4001,TEXT("Q我吧"),TEXT("Res\\Status\\Qme.png"));
  50. MainMenu.AppendMenu(4002,TEXT("离开"),TEXT("Res\\Status\\away.png"));
  51. MainMenu.AppendSeparator();
  52. MainMenu.AppendMenu(4003,TEXT("忙碌"),TEXT("Res\\Status\\busy.png"));
  53. MainMenu.AppendMenu(4004,TEXT("请勿打扰"),TEXT("Res\\Status\\mute.png"));
  54. MainMenu.AppendMenu(4005,TEXT("离线"),TEXT("Res\\Status\\imoffline.png"));
  55. MainMenu.AppendSeparator();
  56. MainMenu.AppendMenu(4006,TEXT("添加状态信息"));
  57. MainMenu.AppendMenu(4006,TEXT("锁定QQ Ctrl + Alt + L"),TEXT("Res\\Menu\\lock20.png"));
  58. MainMenu.InsertMenu((UINT)SubMenu.m_hMenu,TEXT("打开"),4008,0,0,MF_POPUP|MF_STRING|MF_BYPOSITION);
  59. MainMenu.SetMenuBarImage(TEXT("Res\\Menu\\menu_left_bg.png"),&CRect(2,2,2,2));
  60. MainMenu.SetMenuBackImage(TEXT("Res\\Menu\\menu_right_bg.png"),&CRect(2,2,2,2));
  61. MainMenu.SetMenuHovenImage(TEXT("Res\\Menu\\menu_selected.png"),&CRect(2,2,2,2));
  62. MainMenu.SetSeparatorImage(TEXT("Res\\Menu\\menu_separtor.png"),&CRect(2,2,2,2));
  63. MainMenu.SetCheckImage(TEXT("Res\\Menu\\menu_check.png"));
  64. MainMenu.SetArrowImage(TEXT("Res\\Menu\\menu_arrow.png"));
  65. //MainMenu.SetFrameColor(RGB(255,0,0));
  66. //显示菜单
  67. MainMenu.TrackPopupMenu(this);
  68. __super::OnRButtonDown(nFlags,point);
  69. }
  70. BOOL CMenuDlg::OnCommand(WPARAM wParam, LPARAM lParam)
  71. {
  72. switch (LOWORD(wParam))
  73. {
  74. case 3000:
  75. AfxMessageBox(TEXT("打开主面板"));
  76. break;
  77. }
  78. return CDlgControlItem::OnCommand(wParam, lParam);
  79. }