Windows 7 стиль для combobox на панели инструментов Internet Explorer, как? - PullRequest
1 голос
/ 25 мая 2011

Я занимаюсь разработкой панели инструментов 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='*'\"")`

image

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

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

1 Ответ

2 голосов
/ 25 мая 2011

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

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

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

Martyn

...