Элементы управления MFC скрываются в основной теме Windows 7 - PullRequest
1 голос
/ 06 июня 2011

Может кто-нибудь сказать, почему приложения MFC не отображаются правильно в основной теме Windows 7?

РЕДАКТИРОВАТЬ: Есть ли кто-нибудь, кто может угадать проблему?

РЕДАКТИРОВАТЬ:

  • Я использую vs2008 (та же версия используется для создания этого приложения).
  • Это конкретное окно основано на DLL. Для создания этой библиотеки DLL я добавил их в Stdafx.h

.

#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
  • Эта проблема возникаеттолько в этом окне.
  • Это окно основано на CDialog, внутри OnInitDialog () я делаю это

.

CDialog::OnInitDialog();
AfxInitRichEdit();
// And Create three more child windows.
  • Вот как это отображается в основной теме.

enter image description here

Но, когда я перешел на тему Windows Aero, все работает хорошо.

enter image description hereКаким должно быть решение?

РЕДАКТИРОВАТЬ: Кто-нибудь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 22 июля 2013

Я получил ту же проблему и привел сюда Google, но ни один из ответов не решил проблему.Тогда я исправил это только, изменив атрибут transparent окна / элементов управления на ЛОЖЬ.Вы можете попробовать это?

0 голосов
/ 10 июня 2011
  • Желательно инициализировать управление richedit в функции InitInstance класса Application.Я не уверен, что он будет работать нормально с OnInitDialog.
  • Убедитесь, что ваша программа / DLL имеет код UNICODE или нет в настройках проекта.
  • По умолчанию Visual Studio 2008 будет создавать манифест для программыдля EXE).
  • Манифест должен быть внедрен, только если приложение имеет UNICODE.

Пожалуйста, отметьте это.

...