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

📄 chsmenudlg.cpp

📁 漂亮菜单
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// CHSMenuDlg.cpp : implementation file
//

#include "stdafx.h"
#include "CHSMenu.h"
#include "CHSMenuDlg.h"
#include "HSMenu.h"
#include "HSMenuPro.h"
#include "HSGraphics.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCHSMenuDlg dialog

CCHSMenuDlg::CCHSMenuDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCHSMenuDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCHSMenuDlg)
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

	m_clr[ 0] = CHSMenu::GetColor( CLR_BORDERSEL );
	m_clr[ 1] = CHSMenuPro::GetColor( CLR_BKGNDEDGE );
	m_clr[ 2] = CHSMenuPro::GetColor( CLR_SELSTART );
	m_clr[ 3] = CHSMenuPro::GetColor( CLR_SELEND );
	m_clr[ 4] = CHSMenu::GetColor( CLR_BKGNDSEL );
	m_clr[ 5] = CHSMenu::GetColor( CLR_BKGNDMENU );
	m_clr[ 6] = CHSMenu::GetColor( CLR_BORDERMENU );
	m_clr[ 7] = CHSMenu::GetColor( CLR_ARROWSEL );
	m_clr[ 8] = CHSMenu::GetColor( CLR_BORDERSPR );
	m_clr[ 9] = CHSMenu::GetColor( CLR_TEXTSEL );
	m_clr[10] = CHSMenu::GetColor( CLR_TEXTNORMAL );
	m_clr[11] = CHSMenuPro::GetColor( CLR_ICONSHADOW );
}

CCHSMenuDlg::~CCHSMenuDlg()
{
	m_MenuLoad.FreeMenu();
}

void CCHSMenuDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCHSMenuDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCHSMenuDlg, CDialog)
	//{{AFX_MSG_MAP(CCHSMenuDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BTNSTART, OnBtnstart)
	ON_WM_RBUTTONDOWN()
	ON_CBN_SELCHANGE(IDC_CMB_THEME, OnSelchangeCombo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCHSMenuDlg message handlers

BOOL CCHSMenuDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small ic
	
/////////////////////////////////////////////////////////////////////////////////////////////////
{
	UINT uIDC[8] = { IDC_3DMENU, IDC_ROUNDMENU, IDC_ROUNDSEL, IDC_ROUNDARROW, IDC_BORDERSEL,
					 IDC_3DCLICK,IDC_BKGND,		IDC_SELGRADIENTV };

	CWnd *pMainWnd = AfxGetMainWnd();
	for ( int ii=0; ii<8; ii++ )
	{
		pMainWnd->CheckDlgButton( uIDC[ii], BST_CHECKED );
	}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
{
	m_btnStart.SubclassDlgItem( IDC_BTNSTART, this );

	UINT uID[COUNT] = { IDC_BUTTON0,IDC_BUTTON1,IDC_BUTTON2,IDC_BUTTON3,IDC_BUTTON4, IDC_BUTTON5,
						IDC_BUTTON6,IDC_BUTTON7,IDC_BUTTON8,IDC_BUTTON9,IDC_BUTTON10,IDC_BUTTON11 };

	for ( int i=0; i<COUNT; i++ )
	{
		m_btn[i].SubclassDlgItem( uID[i], this );
		m_btn[i].SetInactiveBgColor( m_clr[i] );
		m_btn[i].SetActiveBgColor( m_clr[i] );
	}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
{
	CSpinButtonCtrl	*pSpin = (CSpinButtonCtrl*)GetDlgItem( IDC_SPIN_DELAY );
	ASSERT( pSpin != NULL );
	pSpin->SetRange( 0, 5000 );

	int	 n = 0;
	UINT uIDC[] = { IDC_CMB_ANIMATE_MENU, IDC_EDT_STEP, IDC_EDT_DELAY,
					IDC_CMB_ANIMATE_MENU2,IDC_EDT_STEP2,IDC_EDT_DELAY2 };

	char *sValue[] = { "12", "100", "4", "60" };

	char *sStyle[] = {	"无",
						"滑动-上至下",		"滑动-左至右",
						"打开-中至上下",	"打开-中至左右",
						"伸展-上至下",		"伸展-左至右",
						"百叶窗-上至下",	"百叶窗-左至右",
						"打开-左上至右下",
						"滑动打开-左上至右下",
						"雪花效果",
						"淡出效果",
						"随机效果"};

	for( int i=0; i<2; i++)
	{
		CComboBox	*pCmb = (CComboBox*)GetDlgItem( uIDC[n++] );
		ASSERT( pCmb != NULL );
		pCmb->ResetContent();
		for ( int j=0; j<14; j++ )
			pCmb->AddString( sStyle[j] );	

		CEdit *pEdit = (CEdit*)GetDlgItem( uIDC[n++] );
		ASSERT( pEdit != NULL );
		pEdit->SetWindowText( sValue[n-2-i] );

		pEdit = (CEdit*)GetDlgItem( uIDC[n++] );
		ASSERT( pEdit != NULL );
		pEdit->SetWindowText( sValue[n-2-i] );
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////
{
 	CComboBox	*pCmb = (CComboBox*)GetDlgItem( IDC_CMB_THEME );
 	ASSERT( pCmb != NULL );
 
 	char *str[] = {"Windows Normal","Xp Pro","Spark","Xp","Personality","Dream"};
 
 	pCmb->ResetContent();
 	for ( int n=0; n<6; n++ )
 		pCmb->AddString( str[n] );
}
/////////////////////////////////////////////////////////////////////////////////////////////////

	#ifdef BASEHSMENU
	CreateBaseHSMenu();
	#else
	CreateHSMenu();
	#endif

	m_MenuLoad.LoadMenu( IDR_MENU2 );

/////////////////////////////////////////////////////////////////////////////////////////////////
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CCHSMenuDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

void CCHSMenuDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

HCURSOR CCHSMenuDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CCHSMenuDlg::OnRButtonDown(UINT nFlags, CPoint point) 
{
#ifdef BASEHSMENU
	CHSMenu		*pMenuLoad = new CHSMenu;
#else
	CHSMenuPro	*pMenuLoad = new CHSMenuPro;
#endif

	CPoint pt(point);
	ClientToScreen( &pt );
	UpdateAttrib();
//	pMenuLoad->LoadMenu( IDR_MENU3 );
//	pMenuLoad->TrackPopMenu( pt.x, pt.y, GetSafeHwnd() );
//	pMenuLoad->FreeMenu();

	delete pMenuLoad;

	m_MenuLoad.TrackPopMenu( pt.x, pt.y, GetSafeHwnd() );

	CDialog::OnRButtonDown(nFlags, point);
}

void CCHSMenuDlg::OnBtnstart() 
{
	UpdateAttrib();

	RECT	rect;
	m_btnStart.GetWindowRect( &rect );

	m_Menu[0].EnableMenuItem( ID_UPDATE, ITEM_GRAY, MF_BYCOMMAND );
	m_Menu[0].EnableMenuItem( ID_UPDATE, ITEM_ENABLE, MF_BYCOMMAND );

	m_Menu[0].TrackPopMenu( rect.left+1, rect.bottom+2, GetSafeHwnd() );
}

void CCHSMenuDlg::CreateBaseHSMenu()
{
	for ( int nIndex=0; nIndex<9; nIndex++ )
		m_Menu[nIndex].CreateMenu();

	m_Menu[0].SetMenuItemHeight( 20 );
	m_Menu[0].AppendMenu( "Windows Update",		    ID_UPDATE,	NULL );
	m_Menu[0].AppendMenu( NULL,0,0,ITEM_SEPARATOR );
	m_Menu[0].AppendPopup( "运行", &m_Menu[8],0, NULL );
	m_Menu[0].AppendMenu( NULL,0,0,ITEM_SEPARATOR );
	m_Menu[0].AppendPopup( "收藏夹",NULL,	0,	 NULL );
//	m_Menu[0].AppendPopup( "设置", &m_Menu[6],0, NULL );
	m_Menu[0].AppendPopup( "搜索", &m_Menu[7], 0, NULL );
	m_Menu[0].AppendPopup( "程序",&m_Menu[1],	0,	 NULL);
	m_Menu[0].AppendMenu( "退出",					ID_EXIT,	 NULL );

	m_Menu[0].InsertMenu(	0,"帮助和支持",5003 );
	m_Menu[0].InsertMenu(	7,"关于...",ID_ABOUT );
	m_Menu[0].InsertPopup(	20,"文档",	&m_Menu[4],0 );

	m_Menu[7].AppendMenu( NULL,0,0,ITEM_SEPARATOR );
	m_Menu[7].AppendMenu( "数据库",			ID_OPENFILE );
	m_Menu[7].AppendMenu( "汇编语言程序设计",	ID_OPENFILE, NULL, ITEM_GRAY );
	m_Menu[7].AppendMenu( NULL,				0,			 NULL,			ITEM_SEPARATOR );
	m_Menu[7].AppendMenu( "加密与解密",		3002		 );
	m_Menu[7].AppendMenu( "注册表编辑器",	ID_REGEDIT);
	m_Menu[7].AppendMenu( "游戏",				ID_OPENFILE );
	m_Menu[7].AppendMenu( "程序员",			ID_PROGRAMER  );
	m_Menu[7].AppendMenu( NULL,				0,			 0,		    ITEM_SEPARATOR );
	m_Menu[7].AppendMenu( "项目案例",			3002 );
	m_Menu[7].AppendMenu( "黑客",				3002);
	m_Menu[7].AppendMenu( NULL,0,0,ITEM_SEPARATOR );

	m_Menu[6].SetSeparatorHeight( 20 );
	m_Menu[6].AppendMenu( "游戏",					ID_OPENFILE, NULL );
	m_Menu[6].AppendMenu( "计算机管理",			ID_OPENFILE, NULL, ITEM_GRAY );
	m_Menu[6].AppendMenu( NULL,					0,			 0,		    ITEM_SEPARATOR );
//	m_Menu[6].AppendPopup( "其它选项",&m_Menu[7] );
	m_Menu[6].AppendMenu( "控制台",				3002 ,		 NULL);
	m_Menu[6].AppendMenu( "计划任务",				3002);
	
	m_Menu[5].SetSeparatorHeight( 5 );
	m_Menu[5].AppendMenu( "系统",					3003,		 NULL );
	m_Menu[5].AppendMenu( NULL,						0,			 0,			ITEM_SEPARATOR );
	m_Menu[5].AppendMenu( "添加或删除",				3004,		 NULL );
	m_Menu[5].AppendPopup( "调制解调器选项", &m_Menu[3] );
	m_Menu[5].AppendPopup( "数据库系统", &m_Menu[4] );
	m_Menu[5].AppendMenu( "网络连接",				3005 ,		 NULL);
	m_Menu[5].AppendMenu( NULL,						0,			 0,			ITEM_SEPARATOR );
	m_Menu[5].AppendMenu( "我的菜单",				ID_ABOUT );
	m_Menu[5].AppendMenu( "Hansoftware",			ID_ABOUT,		 NULL );

	m_Menu[4].AppendMenu( "控制面板",				ID_OPENFILE, NULL );
	m_Menu[4].AppendMenu( "任务栏和[开始]菜单",		ID_OPENFILE, NULL, ITEM_GRAY );
//	m_Menu[4].AppendPopup( "运行", &m_Menu[6] );
	m_Menu[4].AppendMenu( NULL,						0,			 0,			ITEM_SEPARATOR );
	m_Menu[4].AppendMenu( "打印机和传真",			3002 ,		 NULL);

//	m_Menu[3].SetRoundRate(30 );
	m_Menu[3].AppendMenu( "我的电脑",				3004,		 NULL );
	m_Menu[3].AppendMenu( NULL,						0,			 0,			ITEM_SEPARATOR );
//	m_Menu[3].AppendPopup( "文件夹选项", &m_Menu[7] );
	m_Menu[3].AppendMenu( "系统文件检查器",			3005 ,		 NULL);
	m_Menu[3].AppendMenu( NULL,						0,			 0,			ITEM_SEPARATOR );
	m_Menu[3].AppendMenu( "我的菜单",				ID_ABOUT );
	m_Menu[3].AppendMenu( "自定义菜单外观",			3003,		 NULL );
	m_Menu[3].AppendMenu( NULL,						0,			 0,			ITEM_SEPARATOR );
	m_Menu[3].AppendMenu( "设置",					3004,		 NULL );
	m_Menu[3].AppendPopup( "图片", NULL );
	m_Menu[3].AppendMenu( "用户帐户",				3005 ,		 NULL);
	m_Menu[3].AppendMenu( NULL,						0,			 0,			ITEM_SEPARATOR );
	m_Menu[3].AppendMenu( "声音和音频设备",			ID_ABOUT );

	m_Menu[2].AppendPopup( "系统工具", &m_Menu[5], 0, NULL );
	m_Menu[2].AppendPopup( "局域网络工具箱", &m_Menu[6], 0, NULL );

//	m_Menu[1].SetRoundRate( 10 );
	m_Menu[1].AppendPopup( "Tools", &m_Menu[2], 0, NULL );
	m_Menu[1].AppendMenu( "Windows 优化大师", ID_NULL, NULL );
	m_Menu[1].AppendMenu( "超级兔子魔法设置", ID_NULL, NULL );
}

bool CCHSMenuDlg::CreateHSMenu()
{
#ifndef BASEHSMENU

	for ( int nIndex=0; nIndex<9; nIndex++ )
		m_Menu[nIndex].CreateMenu();

	m_Menu[0].SetMenuItemHeight( 28 );
	m_Menu[0].SetMenuIconSize( 20 );
	m_Menu[0].AppendMenu(	"Windows Update",ID_NULL,	IDI_ICON13 );
	m_Menu[0].AppendMenu(	NULL,0,0,ITEM_SEPARATOR );
	m_Menu[0].AppendPopup(	"运行",	&m_Menu[8],0, IDI_ICON4 );
	m_Menu[0].AppendMenu(	NULL,0,0,ITEM_SEPARATOR );
	m_Menu[0].AppendPopup(	"收藏夹",NULL,	0,	 IDI_ICON11 );
//	m_Menu[0].AppendPopup(	"设置",	&m_Menu[6],0, IDI_ICON2 );
	m_Menu[0].AppendPopup(	"搜索", &m_Menu[7], 0, IDI_ICON3 );
	m_Menu[0].AppendPopup(	"程序",	&m_Menu[1],	0,	 IDI_ICON12);
	m_Menu[0].AppendMenu(	"退出",	ID_EXIT,	 IDI_ICON6 );

	m_Menu[0].InsertMenu(	0,"帮助和支持",5003 ,		IDI_ICON9 );
	m_Menu[0].InsertMenu(	1,"关于...",ID_ABOUT,	 IDI_ICON7 );
	m_Menu[0].InsertPopup(	2,"文档",	&m_Menu[4],0, IDI_ICON1 );

	m_Menu[7].SetMenuItemHeight( 20 );
	m_Menu[7].AppendMenu( NULL, 2700, 0, ITEM_SEPARATOR );
	m_Menu[7].AppendMenu( "数据库",	ID_OPENFILE );
	m_Menu[7].AppendMenu( "汇编语言程序设计", ID_OPENFILE, NULL, ITEM_GRAY );
	m_Menu[7].AppendMenu( NULL, 2703, NULL,	ITEM_SEPARATOR );
	m_Menu[7].AppendMenu( "加密与解密", 2704 );
	m_Menu[7].AppendMenu( "注册表编辑器", ID_REGEDIT);
	m_Menu[7].AppendMenu( "游戏", ID_OPENFILE );
	m_Menu[7].AppendMenu( "程序员", ID_PROGRAMER  );
	m_Menu[7].AppendMenu( NULL, 2708, 0, ITEM_SEPARATOR );
	m_Menu[7].AppendMenu( "项目案例", 2709 );
	m_Menu[7].AppendMenu( "黑客", 2710);
	m_Menu[7].AppendMenu( NULL, 2711, 0, ITEM_SEPARATOR );

	m_Menu[6].SetSeparatorHeight( 20 );
	m_Menu[6].AppendMenu( "游戏", ID_OPENFILE, IDI_ICON5 );
	m_Menu[6].AppendMenu( "计算机管理", ID_OPENFILE, IDI_ICON9, ITEM_GRAY );
	m_Menu[6].AppendMenu( NULL, 2602, 0,ITEM_SEPARATOR );
	m_Menu[6].AppendMenu( "控制台",	2603 , IDI_ICON13);
	m_Menu[6].AppendMenu( "计划任务", 2604 );
	

⌨️ 快捷键说明

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