我试图把我的窗口桌面的孩子,我这样做是这样的:设置窗口始终停留在桌面上的Windows7
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上工作?
更新: 它与航空主题有关,因为如果我将桌面主题更改为基本,那么窗口会显示,但是如果我切换回航空主题之一,则会再次隐藏。
谢谢
贵窗口收到任何消息?也许它得到了一个节目,但然后隐藏起来?我只是拍出了KLUDGE的想法。 – baash05 2010-05-18 01:12:35
Nop,我已经尝试确保是可见性,没有什么(间谍告诉可见)...是另一件我不明白的东西... – Nuno 2010-05-18 09:05:12
你可以告诉每个FindWindow和FindWindowEx调用是否成功?如果不分开呼叫,并且任何呼叫失败,则调用GetLastError。 – dlb 2010-05-18 17:51:25