什么可能导致 resource.h 为 MFC 控件定义负值?

Shi*_*chi 5 c++ mfc visual-studio-2017

目前,我们已经#define IDC_*增加到我们已经达到 32767 (0x7FFF) 的地步。

现在我们试图添加 32768 (0x8000),突然它变成了一个负值(#define IDC_TEST_BUTTON -32768也是 0x8000)。从那时起,#define语句从 -32768 开始递增(例如 -32767、-32766 等)。

我们_APS_NEXT_CONTROL_VALUE应该指向 32769。

我想这可能是微软使用unsigned shortand 的一个错误signed short,所以我创建了一个新的 MFC 项目并有意将 设置_APS_NEXT_CONTROL_VALUE为 32768 并开始在设计器中添加控件。然而,在这种情况下,#define IDC_TEST_BUTTON 32768_APS_NEXT_CONTROL_VALUE成为32769,符合市场预期。

我搜索了我的整个程序resource.h以查看是否有任何可能的重复数字,因为这似乎会导致#define语句变为负数。但我找不到任何。

根据Microsoft 的文档,IDC 允许的值最大为 0xDFFF,因此 0x8000 完全在允许的 ID 之内。

有没有人知道为什么会这样?