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