关于IsWindowVisible GetTopWindow与GetDeskTopWindow

glunoy 2009-02-13 04:39:44
HWND deskTopWnd = ::GetDesktopWindow();
BOOL ret = ::IsWindowVisible(deskTopWnd);
if (ret)
{
::MessageBox(NULL,"desktop is visible",NULL,MB_OK);
}

1.以上总是返回真(即使任务栏隐藏 然后其它程序全屏(非3D))。我想知道他什么时候不为真?
2.HWND topWnd = ::GetTopWindow(deskTopWnd);为什么总是返回莫名其妙的窗口 它到底是哪个窗口 例如mydlg处于顶层时,myDlg.m_hWnd != topWnd;那topwnd是啥东西?
3.为什么当myDlg为顶层时 HWND deskTopWnd = ::GetDesktopWindow(); 的deskTopWnd = myDlg.m_hWnd ?MSDN不是说 桌面窗口是那啥的吗?
...全文
184 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
你可以枚举桌上所有的窗口,查看其状态是否为最小化。如果都是最小化则符合要求。
回复
glunoy 2009-02-13
那我要怎么判断当前是否所有窗口都最小化?就是按win+d时候的效果
回复
Progman是所有窗体的最上层窗体,Desktop是位于其中的,而其它的窗体,比如记事本程序打开后是Desktop的子窗口。
回复
窗体可见与不见并不是你是否能看到它,当一个窗体因被其它窗体挡住了而不可见并不会影响它的Visible。
因此桌面是不会不可见的。
回复
jinlingzwp 2009-02-13
桌面窗口是一直存在的
回复
glunoy 2009-02-13
The desktop window covers the entire screen and is the area on top of which all icons and other windows are painted.
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2009-02-13 04:39
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……