views:

564

answers:

4

I am trying to determine a window control's visibility that has been hidden or enabled with CWnd::ShowWindow(). (or ::ShowWindow(hWnd,nCmdShow))

I cannot simply use ::IsWindowVisible(hWnd) as the control is on a tab sheet, which may itself be switched out, causing IsWindowVisible to return FALSE.

Is there a way to get the SW_SHOW/HIDE (or others) window status or do I need to use the retun value of ShowWindow() and reset accordingly?

edit: as the control is enabled (or disabled) to show, but may not be currently visible, as the tab is switched ot, I would think that it's SW_SHOW status would remain the same, even if the window itself is not actually switched in. If I'm unrealistic in my expectations that that's fine.

So really I'm looking for 'can this window/control be shown'

A: 

I don't know if there is a proper method for this task but I would try WindowFromPoint Function.

Remarks

The WindowFromPoint function does not retrieve a handle to a hidden or disabled window, even if the point is within the window. An application should use the ChildWindowFromPoint function for a nonrestrictive search.

For example I would convert control's corner coords into screen coords and then try to get it's handle from those points.

Nick D
+2  A: 

I would use GetWindowPlacement, however I am not sure if I understood what you want. It fills in a WINDOWPLACEMENT structure and then use the showCmd member.

jdehaan
this sounds like what i'm after. (you got in before Kirill) I'll try it out
geocoin
+1  A: 

Use GetWindowPlacement. It fills WINDOWPLACEMENT structure, which has field showCmd.

showCmd
Specifies the current show state of the window. This member can be one of the following values.

Kirill V. Lyadvinsky
slightly more thorough than Jdehaan's though he was first...
geocoin
+1  A: 

Call GetWindowLong( handle, GWL_STYLE), check the returned value for WS_VISIBLE style presence.

sharptooth
surely this is the same as IsWindowVisible - which I already said was giving me the wrong result (for this situation)
geocoin