内容目录
背景
准备给自己SDL window窗口修改一下系统菜单,增加一个置顶窗口,方便自己看视频,于是研究一下win32怎么增加菜单
逻辑
- GetSystemMenu 获取系统菜单句柄
- AppendMenu 传入系统菜单句柄,增加自己菜单
demo
RESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
{
int wmId = LOWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: 在此处添加使用 hdc 的任何绘图代码...
EndPaint(hWnd, &ps);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CREATE:
{
HMENU hmenu = GetSystemMenu(hWnd, false);
::AppendMenu(hmenu, 0, 1000, L"hello world");
}
break;
case WM_SYSCOMMAND:
{
int wmId = LOWORD(wParam);
switch (wmId)
{
case 1000:
::MessageBox(hWnd, L"点击hello world", 0, 0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
}
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
总结
win32 开发程序内存小很多,现在都有点害怕使用cef或者electron 类似技术的开发软件,动不动多进程,启动慢,内存占用大,就算vscode 做了优化,感觉启动速度还是比用c++ 开发的编辑器慢很多。