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

📄 mainwnd.cpp

📁 Cele Task - 强大的工作管理员
💻 CPP
字号:



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 预处理
#include "Main.h"
#include "MainWnd.h"
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CMainWnd 类静态变量
HWND CMainWnd::m_hWnd = NULL;
HWND CMainWnd::m_hMenuBar = NULL;
HMENU CMainWnd::m_hMenu = NULL;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 创建主窗口
HWND CMainWnd::Create()
{
	// 注册主窗口类
	WNDCLASS wcClass = {0};
	wcClass.style = CS_VREDRAW | CS_HREDRAW;
	wcClass.lpfnWndProc = MainWndProc;
	wcClass.hInstance = g_hInst;
	wcClass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
	wcClass.lpszClassName = STR_AppName;
	RegisterClass(&wcClass);

	// 创建主窗口
	return CreateWindow(STR_AppName, STR_AppName, WS_CLIPCHILDREN,
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
		NULL, NULL, g_hInst, NULL);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 显示主窗口
VOID CMainWnd::Show(INT iCmdShow)
{
	// 显示主窗口
	ShowWindow(m_hWnd, iCmdShow);
	UpdateWindow(m_hWnd);

	// 消息循环
	MSG msgMsg;
	HACCEL hAccel = LoadAccelerators(g_hInst, MAKEINTRESOURCE(IDR_Accel));
	while (GetMessage(&msgMsg, NULL, 0, 0))
	{
		if (TranslateAccelerator(m_hWnd, hAccel, &msgMsg) == FALSE)
		{
			TranslateMessage(&msgMsg);
			DispatchMessage(&msgMsg);
		}
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 回调函数
LRESULT CALLBACK CMainWnd::MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_CREATE:
		// 窗口被创建
		m_hWnd = hWnd;
		OnCreate();
		break;

	case WM_SETFOCUS:
		// 设置焦点
		SetFocus(CListView::m_hWnd);
		break;

	case WM_ACTIVATE:
		// 激活窗口
		_ExIf(LOWORD(wParam) != WA_INACTIVE, CListView::Refresh());
		break;

	case WM_COMMAND:
		// 命令处理
		OnCommand(wParam, lParam);
		break;

	/*case WM_NOTIFY:
		// 通知消息
		if ((((LPNMHDR) lParam)->code == LVN_KEYDOWN) && _IsNum(((LPNMLVKEYDOWN) lParam)->wVKey))
		{
			CListView::Goto((((LPNMLVKEYDOWN) lParam)->wVKey) - '0');
		}
		break;*/

	case WM_INITMENUPOPUP:
		// 弹出菜单
		OnMenuPopup((HMENU) wParam);
		break;

	case WM_HOTKEY:
		// 热键消息
		_ExIf(HIWORD(lParam) == VK_TBACK, OnCommand(IDM_Exit));
		break;

	case WM_DESTROY:
		// 窗口被销毁
		PostQuitMessage(0);
		break;

	default:
		return DefWindowProc(hWnd, uMsg, wParam, lParam);
	}

	return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 窗口被创建
VOID CMainWnd::OnCreate()
{
	// 创建菜单
	SHMENUBARINFO mbiButtonMenu = {0};
	mbiButtonMenu.cbSize = sizeof(SHMENUBARINFO);
	mbiButtonMenu.hwndParent = m_hWnd;
	mbiButtonMenu.nToolBarId = IDR_Menu;
	mbiButtonMenu.hInstRes = g_hInst;
	if (SHCreateMenuBar(&mbiButtonMenu))
    {
		m_hMenuBar = mbiButtonMenu.hwndMB;
		m_hMenu = (HMENU) SendMessage(m_hMenuBar, SHCMBM_GETMENU, 0, 0);

		if (CReg::Open() == ERROR_SUCCESS)
		{
			if (CReg::GetInt(TEXT("ShowSystemApp")))
			{
				CheckMenu(IDM_View_ShowSysApp, TRUE);
			}
			CReg::Close();
		}

		// 设置后退键
		SendMessage(m_hMenuBar, SHCMBM_OVERRIDEKEY, VK_TBACK,
			MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, SHMBOF_NODEFAULT | SHMBOF_NOTIFY));

		// 创建列表视图
		CListView::Create();
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 命令处理
VOID CMainWnd::OnCommand(WPARAM wParam, LPARAM lParam)
{
	switch (LOWORD(wParam))
	{
	case IDM_Close:
		// 关闭任务
		CListView::Close();
		break;
		
	case IDM_CloseAll:
		// 关闭全部
		CListView::CloseAll();
		break;

	case IDM_CloseOthers:
		// 关闭其它
		CListView::CloseAll(TRUE);
		break;

	case IDM_Goto:
		// 转到
		CListView::Goto();
		break;

	case IDM_Goto0:
	case IDM_Goto1:
	case IDM_Goto2:
	case IDM_Goto3:
	case IDM_Goto4:
	case IDM_Goto5:
	case IDM_Goto6:
	case IDM_Goto7:
	case IDM_Goto8:
	case IDM_Goto9:
		// 转到
		CListView::Goto(LOWORD(wParam) - IDM_Goto0);
		break;

	case IDM_Properties:
		// 属性
		CListView::View();
		break;

	case IDM_View_Toggle:
		// 切换
		CListView::Toggle();
		break;

	case IDM_View_Task:
	case IDM_View_Process:
		// 任务/进程
		CListView::Refresh(LOWORD(wParam));
		break;

	case IDM_View_Power:
		// 电源状态
		CStatus::ShowPower();
		break;

	case IDM_View_Storage:
		// 存储状态
		CStatus::ShowStorage();
		break;

	case IDM_View_ShowSysApp:
		// 显示系统程序
		{
			BOOL bChecked = IsMenuChecked(IDM_View_ShowSysApp);
			CheckMenu(IDM_View_ShowSysApp, !bChecked);
			if (bChecked)
			{
				CReg::DelKey(DEF_SubKey);
			}
			else if (CReg::Open() == ERROR_SUCCESS)
			{
				CReg::SetInt(TEXT("ShowSystemApp"), TRUE);
				CReg::Close();				
			}
		}

	case IDM_View_Refresh:
		// 刷新
		CListView::Refresh();
		break;

	case IDM_Tools_CeleTask:
		// 开始菜单快捷方式
		CShortcut::OnShortcut(IDM_Tools_CeleTask);
		break;

	case IDM_Tools_CloseAll:
		// 开始菜单快捷方式
		CShortcut::OnShortcut(IDM_Tools_CloseAll, TEXT(" -Close"), IDI_Close);
		break;

	case IDM_Tools_Task:
		// 右键按钮快捷方式
		CShortcut::OnRButton();
		break;

	case IDM_Tools_Reboot:
		// 重新启动
		if (MsgBox(STR_ComfirmRestart, IDM_Tools_Reboot, MB_ICONQUESTION | MB_YESNO) == IDYES)
		{
			ExitWindowsEx(EWX_REBOOT, 0);
		}
		break;

	case IDM_Tools_Shutdown:
		// 关闭系统
		if (MsgBox(STR_ComfirmShutdown, IDM_Tools_Shutdown, MB_ICONQUESTION | MB_YESNO) == IDYES)
		{
			ExitWindowsEx(EWX_POWEROFF, 0);
		}
		break;

	case IDM_Help_HotKey:
		// 热键
		MsgBox(STR_HotKeyMsg, IDM_Help_HotKey);
		break;

	case IDM_Help_About:
		// 关于
		{
			TCHAR tzTime[MAX_PATH];
			TCHAR tzText[MAX_PATH * 2];
			DWORD dwTime = GetTickCount() / (1000 * 60);
			wsprintf(tzTime, STR_RunTime, dwTime / 60, dwTime % 60); 
			wsprintf(tzText, TEXT("%s\n%s\n%s\n\n\n%s\n%s\n%s\n\n%s"), 
				STR_Version, STR_Build, STR_WebSite, STR_Description, STR_Copyright, STR_Thanks, tzTime);
			MsgBox(tzText, IDM_Help_About);
		}
		break;

	case IDM_Exit:
		// 退出
		DestroyWindow(m_hWnd);
		break;
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 弹出菜单
VOID CMainWnd::OnMenuPopup(HMENU hMenu)
{
	MENUITEMINFO miItem;
	miItem.cbSize= sizeof(MENUITEMINFO);
	miItem.fMask = MIIM_ID;
	GetMenuItemInfo(hMenu, 0, TRUE, &miItem);

	if (miItem.wID == IDM_Tools_CeleTask)
	{
		// 判断快捷方式是否存在
		CheckMenu(IDM_Tools_CeleTask, CShortcut::Exist(IDM_Tools_CeleTask));
		CheckMenu(IDM_Tools_CloseAll, CShortcut::Exist(IDM_Tools_CloseAll));
	}
	else if (miItem.wID == IDM_Tools_Task)
	{
		CheckMenu(IDM_Tools_Task, CShortcut::Exist());
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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