c++ - 在哪里编码 Win32 菜单

标签 c++ visual-studio winapi win32gui resource-files

我是 Win32 API 的新手,我正在尝试利用空闲时间学习。我进展顺利,但今天我看到了菜单。我意识到有两种不同的方式(我目前知道)可以在 Win32 中实现菜单。我可以在我的 WndProc 中的 WM_CREATE 中使用 AppendMenu,或者我可以在我的 resource.rc 中创建一个菜单,比如:

    IDR_MYMENU MENU
    BEGIN
        POPUP "File"
        BEGIN
            MENUITEM "Exit", ID_FILE_EXIT
        END
        POPUP "Help"
        BEGIN
            MENUITEM "About", ID_HELP_ABOUT
        END
    END

我的问题是:这两种实现方法是否比另一种“更好”。我所说的“更好”是指两种形式的代码是否比另一种形式更具模块化或可扩展性?使用其中任何一种都有好处/缺点吗?

提前感谢您的贡献!

最佳答案

与代码相比,资源文件往往更清楚地说明正在做什么,例如菜单,与 AppendMenu/InsertMenu 调用相比,使用 BEGIN ... END block 查看布局要容易得多。

与在代码中执行相同的任务相比,使用资源还可以让您选择更容易进行翻译。在那种情况下,您创建资源时将字符串翻译成目标语言,而数字标识符在所有版本中都相同。这适用于所有资源类型(对话框、字符串和消息表,甚至图标),而不仅仅是菜单。

关于c++ - 在哪里编码 Win32 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49912828/

相关文章:

delphi - Win32 WriteFile 由于防病毒而未返回

c++ - C++ vector 拥有对象的所有权

c++ - 查找一个字符串 ("AB") 是否是另一个 ("ABCD") 的子集?

visual-studio - 如何使用 MVC5RC/RTW 与现有数据库进行身份验证

visual-studio - Visual Studio中的异常断点

c++ - VS 2010 中 win32 应用程序中的文件夹复制

c++ - 永远不会调用全局 CBT Hook

c++ - 跳过每三个数字

javascript - C++ 使用批处理脚本清除所有浏览器 cookie

visual-studio - Visual Studio : Is there an incremental search for the entire solution?