CMFCMenuBar показывает неправильные всплывающие подсказки

У меня есть проект SDI с включенным Feature Pack. Программа имеет строку меню (CMFCMenuBar) и четыре панели инструментов (CMFCToolBar).

Панели инструментов работают корректно: я присвоил кнопкам ТБ идентификатор эквивалентных пунктов меню и вижу изображения ТБ на голосовых меню.

Теперь, когда я наводил курсор на некоторые голоса меню (всегда одни и те же), я получаю случайный текст всплывающих подсказок, я говорю случайный, потому что я искал свой проект, и у меня нет этих двух строк, написанных ни в одной части моего решения, например:

Ошибка изображения 1 Ошибка изображения 2 Ошибка изображения 3

Недавно я вручную модифицировал файл resource.h, перебирая некоторые идентификаторы... это может быть проблемой?

Кроме того, я попытался решить проблему, сказав Меню не показывать всплывающие подсказки:

dwStile = m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC/* | CBRS_TOOLTIPS*/ | CBRS_FLYBY;
m_wndMenuBar.SetPaneStyle(dwStile);

но, как вы можете видеть на изображениях выше, я не получил никаких результатов.

Любая идея, где я могу искать ошибку?


person IssamTP    schedule 11.08.2017    source источник
comment
Проверьте значения своего идентификатора в resource.h.   -  person VuVirt    schedule 11.08.2017
comment
@VuVirt Что именно мне следует искать?   -  person IssamTP    schedule 05.09.2017
comment
Например, перекрывающиеся значения идентификатора   -  person VuVirt    schedule 05.09.2017
comment
Все ID уникальны, уже проверены.   -  person IssamTP    schedule 06.09.2017
comment
Пожалуйста, проверьте мой ответ, если у вас есть какие-либо предложения.   -  person IssamTP    schedule 07.09.2017
comment
Значения идентификатора ресурса должны быть больше 1000.   -  person VuVirt    schedule 07.09.2017
comment
Уверены ли вы? При создании нового проекта из моделей есть пара идентификаторов ниже 1000, сейчас у меня их 148: битмапы, иконки, диалоги и мейнфрейм.   -  person IssamTP    schedule 08.09.2017
comment
Более того: почему, если я добавляю таблицу строк, идентификаторы начинаются с 1 по умолчанию?   -  person IssamTP    schedule 08.09.2017
comment
Я имел в виду идентификаторы команд   -  person VuVirt    schedule 08.09.2017
comment
Правило состоит в том, что идентификаторы команд должны быть больше, чем WM_USER: msdn.microsoft.com/en-us/library/windows/desktop/   -  person VuVirt    schedule 08.09.2017
comment
Ну, я путаюсь. На какую документацию ссылаться? разве это не новое исчерпывающее руководство: docs.microsoft.com/it-it/cpp/windows/   -  person IssamTP    schedule 08.09.2017
comment
Я всегда использовал MSDN   -  person VuVirt    schedule 08.09.2017


Ответы (2)


Когда вы находитесь в Resource IDE, вы можете указать текст всплывающего окна:

Текст приглашения и всплывающей подсказки

В приведенном выше примере я использовал:

Откройте диалоговое окно для управления и изменения назначений разговоров и различных встреч\nУправление назначениями разговоров

Заметили использование \n? Это то, что разделяет два компонента текстовой строки. Таким образом, в финальном приложении:

Пример

Таким образом, вы сможете правильно указать весь свой текст в редакторе IDE.

person Andrew Truckle    schedule 12.08.2017
comment
Это не это. Например, у меня есть голос Proiezione \ Configura с уникальным идентификатором и приглашением, установленным на Apre la Finestra di configurazione della proiezione\nConfigura Proiezione, и результат тот же: Conferma Generazione. - person IssamTP; 05.09.2017
comment
Пожалуйста, проверьте мой ответ, если хотите. - person IssamTP; 07.09.2017

Я решил проблему. Я обнаружил, что «случайные строки», где вторая часть (после \n) строк хранится в ресурсах библиотеки DLL, которую использует моя программа. В то время как диалоги dll имеют идентификаторы в диапазоне [2000, 2500], 3 строки имеют идентификатор: 1, 2, 3.

Я не помню, где я читал, что такие низкие идентификаторы могут быть опасны, поэтому я вручную изменил его на 3000, 3001 и 3002, и это решило проблему.

Даже если это сработало, я хотел бы знать, почему, поэтому не стесняйтесь редактировать ответ и добавлять полное решение.

person IssamTP    schedule 07.09.2017