Стиль Windows 7 для поля со списком на панели инструментов Internet Explorer, как?

Я разрабатываю панель инструментов Internet Explorer и хочу разместить на панели инструментов поле со списком, которое я создаю.

HWND combobox1=CreateWindow(_T("COMBOBOX"), _T("combobox"), WS_BORDER |
        WS_VISIBLE | WS_CHILD | CBS_DROPDOWN, 10, 0, 200,
        250, m_hWnd, (HMENU) NULL,NULL , NULL);

И это работает правильно, но поле со списком оформлено в стиле Windows Classic, и я хочу, чтобы в нем использовалась тема Windows Aero. Я пробовал это:

#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")`

Изображение

Но ничего не меняется. (Я попробовал это в простом приложении Win32, и стиль работал нормально, но в DLL на панели инструментов стиль не устанавливается)

Вот простой пример.


person Дима Савичев    schedule 25.05.2011    source источник
comment
Здесь нет собственно вопроса. И, пожалуйста, не размещайте ссылки на ZIP-файлы.   -  person John Dibling    schedule 25.05.2011
comment
как я могу получить пример других людей?   -  person Дима Савичев    schedule 25.05.2011


Ответы (1)


Добавление манифеста comctl32 в библиотеку DLL, загруженную в другой процесс, не влияет на контекст активации по умолчанию, установленный исполняемым файлом.

Вместо этого вашей DLL нужно будет активировать контекст активации при ее вызове. См. CreateActCtx, ActivateActCtx. Затем вы будете DeactivateActCtx в каждом методе, прежде чем вернуться к IE и ReleaseActCtx при завершении работы.

Дешевый/быстрый способ сделать это — ISOLATION_AWARE_ENABLED.

Мартин

person Martyn Lovell    schedule 25.05.2011
comment
Мартин, помогите, пожалуйста) вы можете изменить мой простой пример? я гуглю о CreateActCtx и не понимаю, как изменить мой пример - person Дима Савичев; 25.05.2011
comment
К сожалению, у меня нет времени этим заниматься. Но поиск ISOLATION_AWARE_ENABLED покажет вам относительно простой подход. И я должен также добавить, что панели инструментов браузера очень чувствительны к безопасности и производительности. Поэтому, если вам не нравится Win32, вам, вероятно, нужно найти местного наставника, который поможет обеспечить безопасность вашей панели инструментов. - person Martyn Lovell; 25.05.2011
comment
fnks я нашел информацию об ISOLATION_AWARE_ENABLED и решил свою проблему - person Дима Савичев; 25.05.2011