Что может привести к тому, что resource.h будет иметь отрицательные значения, определенные для элементов управления MFC? - PullRequest
4 голосов
/ 06 июня 2019

В настоящее время мы добавили #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 находится в пределах допустимого идентификатора.

Кто-нибудь знает, почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...