Я работаю над приложением MFC, которое стало довольно грязным за годы и по различным командам разработчиков. resource.h файл, который содержит все отображения команды/сообщения, становился довольно большим со временем и имеет много проблем (как дублирующиеся идентификаторы). Я не являюсь опытным с MFC, таким образом, вопрос мог бы звучать довольно глупым...
Документы MSDN упоминают, что идентификаторы Команды и Идентификаторы сообщений не должны быть меньше, чем WM_USER и WM_APP соответственно. Я видел, что большая часть команды ID в resource.h, сгенерированном Visual Studio, начинает приблизительно 100. Разве это не должно вызывать некоторое вмешательство с командами MFC/Windows и сообщениями, то перекрытие с приложением определило идентификаторы? Например, у меня есть команда ID:
#define ID_MY_ID 101
и существует команда окон, которая имеет тот же идентификатор. То, когда MC отправляет эту команду в APP, это обрабатывается как приложение, определило ID_MY_ID, и приложение принимает ненужные меры. Действительно ли это - возможный сценарий?
Кроме того, есть ли некоторый сторонний инструмент, который помогает представить ресурсы проекта?
Обновление 1:
Новый вопрос обнаружился: Каков предпочтительный способ добавить новые пользовательские команды к классам приложений? Как я понял, прежде чем они были добавлены следующим образом: добавьте команду ID к resouce.h и затем добавьте обработчик карт отображения сообщений к классу обработки.
Вы смешиваете две вещи:
Вероятно, вам нет необходимости редактировать resource.h вручную.
Я бы рекомендовал использовать инструмент «Символы ресурсов» (щелкните правой кнопкой мыши ресурсы в представлении ресурсов и выберите из всплывающего меню, я предполагаю, что вы используете VC ++), чтобы удалить все неиспользуемые идентификаторы из resource.h.
командные сообщения отправляются в WM_COMMAND с идентификатором команды в параметре, поэтому он не будет конфликт других сообщений.
Как правило, нет необходимости вставлять или редактировать идентификаторы в ресурсах вручную (идентификаторы, присваиваемые VS автоматически и правильно). В некоторых случаях требуется ручное вмешательство в идентификаторы, но вы можете начать с предположения, что предыдущие команды разработчиков с ресурсами работали правильно. Так что, если вы не столкнулись с проблемой из-за ресурсов, держите их нетронутыми (ИМХО).
«В документах MSDN упоминается, что идентификаторы команд и сообщений не должны быть меньше WM_USER и WM_APP соответственно». - Похоже, вы что-то перепутали.