В настоящее время мы добавили #define IDC_*
к точке, которая достигла 32767 (0x7FFF).
Теперь, когда мы попытались добавить 32768 (0x8000), внезапно это стало отрицательным значением (#define IDC_TEST_BUTTON -32768
, что также 0x8000).С этого момента операторы #define
увеличиваются, начиная с -32768 (например, -32767, -32766 и т. Д.).
Наш _APS_NEXT_CONTROL_VALUE
указывает на 32769, как и должно быть.
Я подумал, может быть, это ошибка при использовании Microsoft unsigned short
и 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 находится в пределах допустимого идентификатора.
Кто-нибудь знает, почему это происходит?