📄 chsmenudlg.cpp
字号:
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 + -