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

📄 chsmenudlg.cpp

📁 漂亮菜单
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	m_Menu[5].AppendMenu( "系统", 2500, IDI_ICON11 );
	m_Menu[5].AppendMenu( NULL,	2501, 0, ITEM_SEPARATOR );
	m_Menu[5].AppendMenu( "添加或删除",	2502, IDI_ICON12 );
	m_Menu[5].AppendPopup( "调制解调器选项", &m_Menu[3], 2503 );
	m_Menu[5].AppendPopup( "数据库系统", &m_Menu[4], 2504 );
	m_Menu[5].AppendMenu( "网络连接", 2505, IDI_ICON2);
	m_Menu[5].AppendMenu( NULL,	2506, 0,ITEM_SEPARATOR );
	m_Menu[5].AppendMenu( "我的菜单", 2507 );
	m_Menu[5].AppendMenu( "Hansoftware", 2508, IDI_ICON1 );

	m_Menu[4].AppendMenu( "控制面板", ID_OPENFILE, IDI_ICON11 );
	m_Menu[4].AppendMenu( "任务栏和[开始]菜单", ID_OPENFILE, IDI_ICON0, ITEM_GRAY );
	m_Menu[4].AppendMenu( NULL, 2402, 0, ITEM_SEPARATOR );
	m_Menu[4].AppendMenu( "打印机和传真", 2403, IDI_ICON8);

	m_Menu[3].AppendMenu( "我的电脑", 2300, IDI_ICON5 );
	m_Menu[3].AppendMenu( NULL,	2301, 0, ITEM_SEPARATOR );
//	m_Menu[3].AppendPopup( "文件夹选项", &m_Menu[7] );
	m_Menu[3].AppendMenu( "系统文件检查器",	2303, IDI_ICON7);
	m_Menu[3].AppendMenu( NULL,	2304, 0,ITEM_SEPARATOR );
	m_Menu[3].AppendMenu( "我的菜单", 2305 );
//	m_Menu[3].SetMenuItemHeight( 28 );
	m_Menu[3].AppendMenu( "自定义菜单外观",	2306, IDI_ICON0 );
	m_Menu[3].AppendMenu( NULL,	2307, 0, ITEM_SEPARATOR );
	m_Menu[3].AppendMenu( "设置", 2308,IDI_ICON2 );
	m_Menu[3].AppendPopup( "图片", NULL, 2309 );
	m_Menu[3].AppendMenu( "用户帐户", 2310, IDI_ICON3);
	m_Menu[3].AppendMenu( NULL,	2311, 0, ITEM_SEPARATOR );
	m_Menu[3].AppendMenu( "声音和音频设备",	2312 );

//	m_Menu[2].SetMenuItemHeight( 22 );
	m_Menu[2].AppendPopup( "系统工具", &m_Menu[5], 2200, IDI_ICON13 );
	m_Menu[2].AppendPopup( "局域网网络工具箱", &m_Menu[6], 2201, IDI_ICON3 );

//	CHSMenu::SetMenuItemHeight( 35 );

	m_Menu[1].AppendPopup( "Tools", &m_Menu[2], 2100, IDI_ICON5 );
	m_Menu[1].AppendMenu( "Windows", 2101, IDI_ICON12 );
	m_Menu[1].AppendMenu( "我的法宝II", 2102, IDI_ICON10 );

#endif

	return true;
}

LRESULT CCHSMenuDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	switch( message )
	{
		case WM_COMMAND:
			switch ( LOWORD( wParam ) )
			{
				case IDC_BUTTON0:
				case IDC_BUTTON1:
				case IDC_BUTTON2:
				case IDC_BUTTON3:
				case IDC_BUTTON4:
				case IDC_BUTTON5:
				case IDC_BUTTON6:
				case IDC_BUTTON7:
				case IDC_BUTTON8:
				case IDC_BUTTON9:
				case IDC_BUTTON10:
				case IDC_BUTTON11:
					SetMenuColor( LOWORD( wParam ) );
					break;

				case ID_ABOUT:
				{
					CAboutDlg dlgAbout;
					dlgAbout.DoModal();
				}
				break;

				case ID_EXIT:
					CDialog::OnCancel();
					break;

				case ID_OPENFILE:
				{
					CFileDialog dlgFile( true );
					dlgFile.DoModal();
				}
				break;

				case ID_HSMENU:
				{	char strHSMenuPath[128];
					::GetModuleFileName( NULL, strHSMenuPath, 128 );
					ShellExecute( NULL, NULL, strHSMenuPath, 0, NULL, SW_SHOWNORMAL );
				}
				break;

				case ID_REGEDIT:
					ShellExecute( NULL, NULL, "regedit.exe",0,NULL, SW_SHOWNORMAL );
					break;

				case ID_EXPLORER:
					ShellExecute( NULL, NULL, "explorer.exe",0,NULL, SW_SHOWNORMAL );
					break;

				case ID_ADDMENUITEM:
				{
					CString str;
					static ncount = 0;
					int nN;

					ncount++;
					switch ( nN = abs( rand()%3 ) )
					{
					case 0:
						str.Format( "乡亲们!俺是%d号.新来的.", ncount );
						break;
					case 1:
						str.Format( "俺是%d号.也是个新来的.", ncount );
						break;
					case 2:
						str.Format( "俺%d号.刚来!", ncount );
						break;
					case 3:
						str.Format( "%d我在这里!!", ncount );
						break;
					}

					m_MenuLoad.InsertMenu( abs(rand())%m_MenuLoad.GetMenuItemCount(), str, ID_DELMENUITEM );
					m_MenuLoad.SetMenuState( ID_DELNEWMENUITEM, MF_ENABLED, MF_BYCOMMAND );
				}
					break;

				case ID_DELNEWMENUITEM:
					while (	m_MenuLoad.DeleteMenu( ID_DELMENUITEM, MF_BYCOMMAND ) );
					m_MenuLoad.SetMenuState( ID_DELNEWMENUITEM, 
											 m_MenuLoad.GetMenuState( ID_DELNEWMENUITEM, MF_BYCOMMAND )|MF_GRAYED, MF_BYCOMMAND );
					break;

				case ID_CHANGETOSPR:
					m_MenuLoad.SetMenuState( ID_CHANGETOSPR, MF_SEPARATOR, MF_BYCOMMAND );
					break;
			}	break;
	}

	return CDialog::WindowProc(message, wParam, lParam);
}

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

//////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	UINT nIDC[10] ={IDC_3DCLICK,	IDC_3DSEL,		 IDC_3DMENU, 
					IDC_ROUNDARROW, IDC_3DSEPARATOR, IDC_3DSEPARATOR2,
					IDC_BKGND,		IDC_CLRSEL,		IDC_SELGRADIENTV,IDC_BORDERSEL };

	int nTp[10] = { ML_CLICK3D,		ML_SEL3D,	ML_MENU3D,
					ML_ARROWROUND,	ML_SEPARATOR3D_CONCAVE, 
					ML_SEPARATOR3D_HEAVE,			ML_BKGNDEDGE, ML_SELGRADIENT, 
					ML_SELGRADIENT_V, ML_SELBORDER };

	for ( int i=0; i<10; i++ )
		CHSMenuPro::SetMenuStyle( nTp[i], 0!=IsDlgButtonChecked( nIDC[i] ) );
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	CHSMenu::SetCustomMenu( IsDlgButtonChecked( IDC_ROUNDMENU ) ? CustomMenu : NULL );
	CHSMenu::SetCustomMenuItem( IsDlgButtonChecked( IDC_ROUNDSEL ) ? CustomMenuItem : NULL );
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	BOOL	bAnimateMenu = TRUE;
	CString strDelay,strStep;

	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 };

	for( int i=0; i<2; i++ )
	{
		CComboBox	*pCmb = (CComboBox*)GetDlgItem( uIDC[n++] );
		ASSERT( pCmb != NULL );

		UINT uAnimateType = ANIMATE_NONE;

		switch( pCmb->GetCurSel() )
		{
			case 0:		uAnimateType = ANIMATE_NONE;				break;
			case 1:		uAnimateType = ANIMATE_SLIDE_TTB;			break;
			case 2:		uAnimateType = ANIMATE_SLIDE_LTR;			break;
			case 3:		uAnimateType = ANIMATE_UNFOLD_MTTB;			break;
			case 4:		uAnimateType = ANIMATE_UNFOLD_MTLR;			break;
			case 5:		uAnimateType = ANIMATE_STRETCH_TTB;			break;
			case 6:		uAnimateType = ANIMATE_STRETCH_LTR;			break;
			case 7:		uAnimateType = ANIMATE_SHUTTER_TTB;			break;
			case 8:		uAnimateType = ANIMATE_SHUTTER_LTR;			break;
			case 9:		uAnimateType = ANIMATE_UNFOLD_LTTRB;		break;
			case 10:	uAnimateType = ANIMATE_UNFOLDSLIDE_LTTRB;	break;
			case 11:	uAnimateType = ANIMATE_NOISE;				break;
			case 12:	uAnimateType = ANIMATE_FADE;				break;
			case 13:	uAnimateType = ANIMATE_RAND;				break;
		}

		CEdit *pEdit = (CEdit*)GetDlgItem( uIDC[n++] );
		ASSERT( pEdit != NULL );
		pEdit->GetWindowText( strStep );

		pEdit = (CEdit*)GetDlgItem( uIDC[n++] );
		ASSERT( pEdit != NULL );
		pEdit->GetWindowText( strDelay );

		CHSMenu::SetMenuAnimate( uAnimateType,  atoi(strStep.GetBuffer(0)), atoi(strDelay.GetBuffer(0)), bAnimateMenu );
		bAnimateMenu = FALSE;
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
}

void CCHSMenuDlg::OnSelchangeCombo() 
{
	CComboBox	*pCmb = (CComboBox*)GetDlgItem( IDC_CMB_THEME );
	ASSERT( pCmb != NULL );

	UINT nID[12] ={ IDC_ROUNDSEL,	IDC_3DCLICK,	IDC_3DSEL,		 IDC_3DMENU, 
//				        0                 1               2                3 
					IDC_ROUNDMENU, 	IDC_ROUNDARROW, IDC_3DSEPARATOR, IDC_3DSEPARATOR2,
//					    4                 5               6                7  
					IDC_BKGND,		IDC_CLRSEL,		IDC_SELGRADIENTV,IDC_BORDERSEL };
//					    8                 9               10               11 

	for ( int i=0; i<12; i++ )
		CheckDlgButton( nID[i], BST_UNCHECKED );

	UINT nbtnID[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 ( i=0; i<COUNT; i++ )
	{
		m_btn[i].SetInactiveBgColor( m_clr[i] );
		m_btn[i].SetActiveBgColor( m_clr[i] );
	}
	
	typedef COLORREF CLR;

	int n;
	int nidchk[20] = {0};
	int nidbtn[20] = {0};
	CLR clr[20]    = {0};

	switch ( pCmb->GetCurSel() )
	{
		case 0:	{
			int chk[] = { 3, 6 };
			int btn[] = { 4, 5, 7, 8, 9, 10, 11 };
			CLR clb[] = { RGB(118,146,226),RGB(228,223,214),RGB(255,255,255),RGB(160,160,160),
				          RGB(255,255,255),RGB(0,0,0),RGB(192,192,192) };

			nidchk[0] = 2;
			nidbtn[0] = 7;
			for ( n=0; n<nidchk[0]; n++ ) nidchk[n+1] = chk[n];
			for ( n=0; n<nidbtn[0]; n++ ) nidbtn[n+1] = btn[n];
			for ( n=0; n<nidbtn[0]; n++ ) clr[n] = clb[n];
		}	break;

		case 1:	{
			int chk[] = { 0, 1, 3, 4, 5, 7, 9, 11 };
			int btn[] = { 0, 2, 3, 5, 7, 9, 10 };
			CLR clb[] = { RGB(47,60,174),RGB(240,240,240),RGB(0,128,64),RGB(228,223,214),
				          RGB(255,255,255),RGB(255,255,255),RGB(0,0,64) };

			nidchk[0] = 8;
			nidbtn[0] = 7;
			for ( n=0; n<nidchk[0]; n++ ) nidchk[n+1] = chk[n];
			for ( n=0; n<nidbtn[0]; n++ ) nidbtn[n+1] = btn[n];
			for ( n=0; n<nidbtn[0]; n++ ) clr[n] = clb[n];
		}	break;

		case 2:	{
			int chk[] = { 0, 1, 2, 3, 4, 5, 8, 9 };
			int btn[] = { 1, 2, 3, 5, 7, 9, 10, 11 };
			CLR clb[] = { RGB(37,70,184),RGB(235,235,235),RGB(37,70,184),RGB(0,128,64),
						  RGB(0,128,128),RGB(0,0,64),RGB(255,255,255),RGB(64,128,128) };

			nidchk[0] = 8;
			nidbtn[0] = 8;
			for ( n=0; n<nidchk[0]; n++ ) nidchk[n+1] = chk[n];
			for ( n=0; n<nidbtn[0]; n++ ) nidbtn[n+1] = btn[n];
			for ( n=0; n<nidbtn[0]; n++ ) clr[n] = clb[n];
		}	break;

		case 3:	{
			int chk[] = { 3, 5, 8, 11 };
			int btn[] = { 0, 1, 4, 5, 7, 8, 9, 10, 11 };
			CLR clb[] = { RGB(47,60,174),RGB(250,250,250),RGB(202,219,232),RGB(228,223,214),
				          RGB(255,255,255),RGB(100,100,100),RGB(0,0,0),RGB(0,0,64),RGB(64,128,128) };

			nidchk[0] = 4;
			nidbtn[0] = 9;
			for ( n=0; n<nidchk[0]; n++ ) nidchk[n+1] = chk[n];
			for ( n=0; n<nidbtn[0]; n++ ) nidbtn[n+1] = btn[n];
			for ( n=0; n<nidbtn[0]; n++ ) clr[n] = clb[n];
		}	break;

		case 4:	{
			int chk[] = { 0, 1, 2, 3 };
			int btn[] = { 4, 5, 7, 8, 9, 10, 11 };
			CLR clb[] = { RGB(0,0,0),RGB(0,0,0),RGB(0,128,0),RGB(157,157,157),RGB(255,255,255),
				          RGB(255,255,255),RGB(64,128,128) };

			nidchk[0] = 4;
			nidbtn[0] = 7;
			for ( n=0; n<nidchk[0]; n++ ) nidchk[n+1] = chk[n];
			for ( n=0; n<nidbtn[0]; n++ ) nidbtn[n+1] = btn[n];
			for ( n=0; n<nidbtn[0]; n++ ) clr[n] = clb[n];
		}	break;

		case 5:	{
			int chk[] = { 5, 8, 11 };
			int btn[] = { 0, 1, 4, 5, 7, 8, 9, 10, 11, 6 };
			CLR clb[] = { RGB(255,255,255),RGB(255,128,64),RGB(255,128,128),RGB(255,255,255),RGB(0,0,0),
				          RGB(192,192,192),RGB(0,0,64),RGB(255,255,255),RGB(64,128,128),RGB(255,255,255) };

			nidchk[0] = 3;
			nidbtn[0] = 10;
			for ( n=0; n<nidchk[0]; n++ ) nidchk[n+1] = chk[n];
			for ( n=0; n<nidbtn[0]; n++ ) nidbtn[n+1] = btn[n];
			for ( n=0; n<nidbtn[0]; n++ ) clr[n] = clb[n];
		}	break;
	}		

	for ( i=0; i<nidchk[0]; i++ )
		CheckDlgButton( nID[nidchk[i+1]], BST_CHECKED );

	for ( i=0; i<nidbtn[0]; i++ )
		SetMenuColor( nbtnID[nidbtn[i+1]], clr[i], 0 );
}

void CCHSMenuDlg::GetColor(COLORREF *pclrSet)
{
	CColorDialog	clrDlg( *pclrSet, CC_FULLOPEN, this );

	if ( clrDlg.DoModal() == IDOK )
		*pclrSet = clrDlg.GetColor();
}

void CCHSMenuDlg::SetMenuColor(UINT uID, COLORREF clrSet, BOOL bShowGetClrDlg )
{
	int			nIndex=0, nBtn=0;
	COLORREF	*clr=NULL;

	switch ( uID )
	{
		case IDC_BUTTON0:
			nBtn = 0;
			nIndex = CLR_BORDERSEL;
			clr = &m_clr[0];
			break;

		case IDC_BUTTON1:
			nBtn = 1;
			nIndex = CLR_BKGNDEDGE;
			clr = &m_clr[1];
			break;

		case IDC_BUTTON2:
			nBtn = 2;
			nIndex = CLR_SELSTART;
			clr = &m_clr[2];
			break;

		case IDC_BUTTON3:
			nBtn = 3;
			nIndex = CLR_SELEND;
			clr = &m_clr[3];
			break;

		case IDC_BUTTON4:
			nBtn = 4;
			nIndex = CLR_BKGNDSEL;
			clr = &m_clr[4];
			break;

		case IDC_BUTTON5:
			nBtn = 5;
			nIndex = CLR_BKGNDMENU;
			clr = &m_clr[5];
			break;

		case IDC_BUTTON6:
			nBtn = 6;
			nIndex = CLR_BORDERMENU;
			clr = &m_clr[6];
			break;

		case IDC_BUTTON7:
			nBtn = 7;
			nIndex = CLR_ARROWSEL;
			clr = &m_clr[7];
			break;

		case IDC_BUTTON8:
			nBtn = 8;
			nIndex = CLR_BORDERSPR;
			clr = &m_clr[8];
			break;

		case IDC_BUTTON9:
			nBtn = 9;
			nIndex = CLR_TEXTSEL;
			clr = &m_clr[9];
			break;

		case IDC_BUTTON10:
			nBtn = 10;
			nIndex = CLR_TEXTNORMAL;
			clr = &m_clr[10];
			break;

		case IDC_BUTTON11:
			nBtn = 11;
			nIndex = CLR_ICONSHADOW;
			clr = &m_clr[11];
			break;

	}

	if ( bShowGetClrDlg )
		 GetColor( clr );
	else *clr = clrSet;

	m_btn[nBtn].SetInactiveBgColor( *clr, true );
	m_btn[nBtn].SetActiveBgColor( *clr, true );
	CHSMenuPro::SetColor( nIndex, *clr );
}

⌨️ 快捷键说明

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