📄 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);
return 0;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 窗口被创建
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);
// 设置后退键
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_CloseOthers:
// 关闭其它
CListView::CloseAll(TRUE);
break;
case IDM_CloseAll:
// 关闭全部
CListView::CloseAll();
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_Help_ShowSysApp:
// 显示系统程序
CheckMenu(IDM_Help_ShowSysApp, !IsMenuChecked(IDM_Help_ShowSysApp));
case IDM_View_Refresh:
// 刷新
CListView::Refresh();
break;
case IDM_Help_CeleTask:
// 开始菜单快捷方式
CShortcut::OnShortcut(IDM_Help_CeleTask);
break;
case IDM_Help_CloseAll:
// 开始菜单快捷方式
CShortcut::OnShortcut(IDM_Help_CloseAll, TEXT(" -Close"), IDI_Close);
break;
case IDM_Help_Task:
// 右键按钮快捷方式
CShortcut::OnRButton();
break;
case IDM_Help_HotKey:
// 热键
MsgBox(STR_HotKeyMsg, IDM_Help_HotKey);
break;
case IDM_Help_About:
// 关于
MsgBox(STR_AboutMsg, 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_Help_CeleTask)
{
// 判断快捷方式是否存在
CheckMenu(IDM_Help_CeleTask, CShortcut::Exist(IDM_Help_CeleTask));
CheckMenu(IDM_Help_CloseAll, CShortcut::Exist(IDM_Help_CloseAll));
}
else if (miItem.wID == IDM_Help_Task)
{
CheckMenu(IDM_Help_Task, CShortcut::Exist());
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -