小鱼塘

  • 小玩意
  • 小想法
记录自己技术和想法地方
  1. 首页
  2. win32
  3. 正文

win32编程-系统菜单增加菜单

10月 12, 2022 295点热度 1人点赞 0条评论
内容纲要

背景

准备给自己SDL window窗口修改一下系统菜单,增加一个置顶窗口,方便自己看视频,于是研究一下win32怎么增加菜单

逻辑

  1. GetSystemMenu 获取系统菜单句柄
  2. 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++ 开发的编辑器慢很多。

标签: win32 菜单
最后更新:10月 15, 2022

小鱼儿

爱研究技术,爱玩LOL

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2022 小鱼塘. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

湘ICP备18005349号