在哪里编码 Win32 菜单
Where to code Win32 Menu
我是 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
我的问题是:任一实现方法 "better" 与另一个不同。 "better" 我的意思是两种形式的代码是否比另一种形式更模块化或可扩展? benefits/drawbacks 两者都可以使用吗?
提前感谢您的贡献!
与代码相比,资源文件往往更清楚地说明正在做什么,例如,与 AppendMenu/InsertMenu 调用相比,使用 BEGIN ... END 块查看布局要容易得多。
与在代码中执行相同的任务相比,使用资源还可以让您选择更容易的翻译。在那种情况下,您创建资源时将字符串翻译成目标语言,而数字标识符在所有版本中都相同。这适用于所有资源类型(对话框、字符串和消息表,甚至图标),而不仅仅是菜单。
我是 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
我的问题是:任一实现方法 "better" 与另一个不同。 "better" 我的意思是两种形式的代码是否比另一种形式更模块化或可扩展? benefits/drawbacks 两者都可以使用吗?
提前感谢您的贡献!
与代码相比,资源文件往往更清楚地说明正在做什么,例如,与 AppendMenu/InsertMenu 调用相比,使用 BEGIN ... END 块查看布局要容易得多。
与在代码中执行相同的任务相比,使用资源还可以让您选择更容易的翻译。在那种情况下,您创建资源时将字符串翻译成目标语言,而数字标识符在所有版本中都相同。这适用于所有资源类型(对话框、字符串和消息表,甚至图标),而不仅仅是菜单。