如何找到窗口的SW_SHOW/SW_HIDE状态

geo*_*oin 14 c++ winapi mfc show-hide

我正在尝试确定已使用CWnd :: ShowWindow()隐藏或启用的窗口控件的可见性.(或:: ShowWindow(hWnd,nCmdShow))

我不能简单地用:: IsWindowVisible(HWND)作为控制是在标签片,其自身可以被切换出,引起IsWindowVisible返回FALSE.

有没有办法获得SW_SHOW/HIDE(或其他)窗口状态或我是否需要使用ShowWindow()的重新调整值并相应地重置?

编辑:当控件被启用(或禁用)显示,但可能当前不可见,因为选项卡被切换,我认为它的SW_SHOW状态将保持不变,即使窗口本身实际上没有切换如果我对我的期望不太现实,那就没事了.

所以我真的在寻找'可以显示此窗口/控件'

sha*_*oth 12

调用GetWindowLong( handle, GWL_STYLE),检查WS_VISIBLE样式存在的返回值.

  • MSDN是你的朋友(http://msdn.microsoft.com/en-us/library/ms633530(v=vs.85).aspx),IsWindowVisible检查窗口和所有祖先的WS_VISIBLE样式("如果指定的话)窗口,其父窗口,其父窗口等等,具有WS_VISIBLE样式,返回值为非零.否则,返回值为零."),但这只检查窗口自身的状态.因此,请将此视为该HWND相对于其父级的"本地"可见性(这听起来像您要查找的内容); 而IsWindowVisible是净"全球"结果. (4认同)
  • 肯定这和IsWindowVisible一样 - 我已经说过这会给我错误的结果(针对这种情况) (2认同)

Kir*_*sky 7

使用GetWindowPlacement.它填充了具有字段的WINDOWPLACEMENT结构showCmd.

showCmd
指定窗口的当前显示状态.该成员可以是以下值之一.