Проблемы с использованием класса CDialogEx, которые не возникают при использовании класса CDialog

1.- Привет. После поиска на многих сайтах и ​​форумах всю эту неделю я обнаружил суть проблемы, с которой столкнулся. Проблема заключается в том, что когда я создаю новый проект MFC в Visual C ++, если я устанавливаю тип приложения как «Основанный на диалоге» и позволяю соответствующему классу диалога наследовать от своего CDialogEx по умолчанию, то проблема показывает, что программа компилируется и выполняется немедленно, без изменения любой код (я не знаю, можете ли вы попробовать это на своей машине).

2. -Проводное поведение заключается в том, что при активном диалоговом окне, если я нажимаю на свободное место на панели задач (и даже в другом не развернутом окне), тогда границы (включая строку заголовка) окна диалога основанные на приложениях остаются «сфокусированными» (не серыми), если щелкнуть панель задач или другое окно, которое не полностью покрывает окно моего приложения, тогда окно моего приложения должно потерять фокус.

3.-Я понимаю это после большого количества кода, потому что я обнаружил это поведение с помощью класса CFileDialog, потому что, когда я создаю (DoModal) экземпляр CFileDialog, окно моего приложения теряет фокус (становится «серым»), когда открывается диалоговое окно файла (как и должно быть), но когда диалоговое окно файла заканчивается, границы моего окна остаются серыми (что не правильно), и это остается таким до тех пор, пока я не сверну и не восстановлю свое окно, или я не переключусь на другое окно и не вернусь к своему окну. ,

4.-Я обнаружил, что проблема была в наследовании от класса CDialogEx, потому что я создал новый проект с нуля (как я описал в параграфе 1), чтобы посмотреть, изменил ли я то, что заставило мою программу вести себя неправильно, и Оказывается, новый проект ведет себя так, как я описал в пункте 2.

5.-Хорошая новость заключается в том, что я пытался создать новый проект, но на этот раз унаследовал от CDialog вместо CDialogEx. И к моему удивлению, эта новая программа ведет себя правильно, я имею в виду, что проводное поведение, описанное в параграфе 2, отсутствует в этом новом проекте. Как я описал в параграфе 3, другая из моих проблем была с файловым диалогом (класс CFileDialog), к счастью, изменение кода моего проекта для наследования от CDialog вместо CDialogEx также решило эту проблему. Я имею в виду, проблема была в классе CDialogEx.

6.-Я решил написать этот вопрос, а также предоставить информацию, которую я обнаружил, потому что, когда я искал, я видел много людей на разных форумах, имеющих одну и ту же проблему без решения. Хочу отметить, что я испробовал все советы, представленные на форумах, и, что касается них, у меня ничего не получалось.

7.-Как я уже сказал, одним из решений является изменение наследования с CDialogEx на CDialog. Но мой вопрос: знаете ли вы что-то, что я должен сделать, чтобы моя программа работала правильно в классе CDialogEx, потому что я предпочитаю использовать новые интерфейсы, а не старые. Я также хочу знать, экспериментируете ли вы с той же проблемой, что и я, в вашей визуальной студии или нет.

Я надеюсь, что моя информация и ваши ответы полезны для других.
Большое спасибо за ваши ответы.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]