【问题标题】:Why am I getting the error "WM_MENUCOMMAND was not declared in this scope" when I included windows.h?为什么我在包含 windows.h 时收到错误“WM_MENUCOMMAND 未在此范围内声明”?
【发布时间】:2014-08-14 04:31:54
【问题描述】:

我正在尝试制作一个应用程序来捕获上下文菜单项的选择,直到现在我已经包含 windows.h 并且它似乎工作正常,但由于某种原因我收到错误“WM_MENUCOMMAND 是未在此范围内声明”。我在 windows xp 上,所以我满足MSDN 所示的最低系统要求,我认为没有理由它不应该工作。如何让 WM_MENUCOMMAND 工作?

【问题讨论】:

  • 你的项目是拆分成多个文件了吗?
  • 听起来你还没有#defined WINVER
  • @JonathanPotter:默认情况下,WINVER在之前未定义时定义为0x500,WM_MENUCOMMANDWINVER >= 0x500时定义。
  • @Remy Lebeau:你确定这是正确的吗?我刚刚在我的代码中添加了#define WINVER 0x500 并且它起作用了,而之前我根本没有定义winver。
  • @RemyLebeau:对 MSVC 来说是正确的,不一定对其他编译器(看起来 OP 正在使用)

标签: c++ windows winapi


【解决方案1】:

WM_MENUCOMMANDwinuser.h 中定义(其中windows.h 包括),但仅当WINVER>= 0x0500_WIN32_WCE 未定义时。因此,您可能将WINVER 设置得太低。默认设置为0x0500,因此您的项目中必须将其重新定义为较低的值。

【讨论】:

  • #define _WIN32_WINNT 0x0500 会导致这种情况发生吗?我在代码的顶部添加了#define WINVER 0x500,所以如果有什么东西在重新定义它,我会认为它会被覆盖..
  • 默认 Visual Studio 项目包括 <SDKDDKVer.h> 以设置 WINVER。默认值取决于用于编译项目的 SDK。
  • 我将 Code::blocks 与 MingW 一起使用。我没有意识到 SDK 包含自己的文件,我在哪里可以找到这些隐藏包含的列表?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 2022-12-06
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多