📄 mainwnd.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 + -