Я пытаюсь сделать мое окно дочерним по отношению к рабочему столу, и я делаю это так:
HWND ProgmanHwnd =
::FindWindowEx(
::FindWindowEx(
::FindWindow(L"Progman", L"Program Manager"),
NULL,
L"SHELLDLL_DefView",
L""),
NULL,
L"SysListView32",
L"FolderView");
SetParent(m_hWnd, ProgmanHwnd);
Это прекрасно работает в windowsXP, мое окно находится под всеми окнами, и когда я нажимаю опцию «показать рабочий стол», окно отображается, а все остальные «нормальные» окна скрываются.
Но в Win7, когда я делаю приведенный выше код, это окно не отображается, в spy ++ я вижу, что мое окно является дочерним окном SysListView32, но оно не отображается (и имеет стиль WM_VISIBLE)?
Чего мне не хватает? или что поменялось с winXP на win7? Как я могу сделать это, чтобы работать на Win7?
Обновление:
Это как-то связано с аэро темой, потому что если я изменю тему рабочего стола на базовую, то отображается окно, но если я переключаюсь обратно на одну из аэро тем, то снова скрывается.
Спасибо