[comp.windows.ms.programmer] Hiding an icon

slh@wolf.cs.washington.edu (Scott Heyano) (01/22/91)

In article <10382@jarthur.Claremont.EDU> jls@hsv3.UUCP writes:
|
|I'm trying to hide a minimized window so that it doesn't appear on the
|screen at all.  My thought was to just do a ShowWindow(hWnd, SW_HIDE).
|Unfortunately, this only hides the icon itself, and not the little caption
|underneath it.  Is there some elegant (meaning easy) way to do this?
|
	I don't know what the right way is, but you could
	hide the window and restore it, possibly in the same call,
	depending if windows does the smart thing.
|Bonus question:  does anyone know anything about the WM_QUERYPARKICON
|message?  You can see it in Spy if you spy on an icon and then select
|"Arrange Icons" from the Task Manager.
|
	Guess: it is asking for an icon to display while minimized
	try creating a class w/o an icon and if you get this msg
	return the handle of an icon

jls@hsv3.UUCP (James Seidman) (01/23/91)

In article <14607@june.cs.washington.edu> slh@wolf.cs.washington.edu (Scott Heyano) writes:
>In article <10382@jarthur.Claremont.EDU> jls@hsv3.UUCP writes:
>|I'm trying to hide a minimized window so that it doesn't appear on the
>|screen at all.  My thought was to just do a ShowWindow(hWnd, SW_HIDE).
>|Unfortunately, this only hides the icon itself, and not the little caption
>|underneath it.  Is there some elegant (meaning easy) way to do this?
>	I don't know what the right way is, but you could
>	hide the window and restore it, possibly in the same call,
>	depending if windows does the smart thing.

Actually, I can't do that.  I'm trying to hide the window from inside
the SIZEICONIC case of the WM_SIZE message.  If I restore the window,
I'll get a new WM_SIZE message with a SIZENORMAL.  This will set off a
whole new set of processes as I position child windows, etc.  

If I could get a handle to that little caption window then I could just
hide it explicitly.  But even EnumTaskWindows() won't seem to get me the
right handle!  Aargh!

-- 
Jim Seidman (Drax), the accidental engineer.
"There's a certain freedom to being completely screwed." - The Freshman
UUCP: ames!vsi1!hsv3!jls	      Internet: hsv3.UUCP!jls@apple.com

slh@wolf.cs.washington.edu (Scott Heyano) (01/23/91)

In article <6754@hsv3.UUCP> jls@hsv3.UUCP (James Seidman) writes:
[stuff]
|Actually, I can't do that.  I'm trying to hide the window from inside
|the SIZEICONIC case of the WM_SIZE message.  If I restore the window,
|I'll get a new WM_SIZE message with a SIZENORMAL.  This will set off a
|whole new set of processes as I position child windows, etc.  
|

	Again maybe not the best solution, but a solution:
	just set a flag and check it when you get that first SIZENORMAL.

|If I could get a handle to that little caption window then I could just
|hide it explicitly.  But even EnumTaskWindows() won't seem to get me the
|right handle!  Aargh!
|
	Did you check for it being a child of the window it is associated
	with or that it is owned by that window (though not a child).

jseidman@jarthur.Claremont.EDU (James Seidman) (01/23/91)

jls@hsv3.UUCP (James Seidman) writes:
>If I could get a handle to that little caption window then I could just
>hide it explicitly.  But even EnumTaskWindows() won't seem to get me the
>right handle!  Aargh!

Actually, it's even worse than that.  I can get the handle by doing a
hCaption=GetNextWindow(hWnd, GW_HWNDPREV).  But even if I sit there and do
ShowWindow(hCaption, SW_HIDE) all day, the stupid window won't disappear!
If I try to do a DestroyWindow(hCaption) then next time I restore and
minimize the window, the system hangs (no, I'm not trying to destroy the
same window again).

There must be some way to do this!

-- 
Jim Seidman, Headland Technology, 46221 Landing Parkway, Fremont CA 94538
UUCP: ames!vsi1!headland!jls                 INTERNET: hsv3!jls@apple.com
"Love your enemy, smite your enemy, you still need an enemy!"
					-Joseph, in "Heart of the World"

roper@nwnexus.WA.COM (Michael Roper) (01/26/91)

If the goal is to simply have the window disappear when
minimized, just move it off the screen.  If alt-tabbing
is a problem, try disabling the window as well.

Michael Roper
hDC Computer Corporation

davidds@microsoft.UUCP (David D'SOUZA) (01/28/91)

In article <10382@jarthur.Claremont.EDU> jls@hsv3.UUCP writes:
>
>I'm trying to hide a minimized window so that it doesn't appear on the
>screen at all.  My thought was to just do a ShowWindow(hWnd, SW_HIDE).
>Unfortunately, this only hides the icon itself, and not the little caption
>underneath it.  Is there some elegant (meaning easy) way to do this?

Sure, you should pass the WM_SHOWWINDOW message on to DefWindowProc. 
We'll take care of everything for you there. You can look at the
message and do what ever you are currently doing but make sure you also
let DefWindowProc see it.

>Bonus question:  does anyone know anything about the WM_QUERYPARKICON
>message?  

Yes. But since it's not documented, I wouldn't want anyone to assume
anything which will break them.

-Dave

jls@hsv3.UUCP (James Seidman) (01/29/91)

In article <462@nwnexus.WA.COM> roper@nwnexus.UUCP (Michael Roper) writes:
>If the goal is to simply have the window disappear when
>minimized, just move it off the screen.  If alt-tabbing
>is a problem, try disabling the window as well.

This also won't work.  Moving an iconized window off the edge of the
screen will still leave the caption on the screen.  (It appears the
Window Manager takes special pains to make sure the caption is always
entirely on-screen.  Thanks, guys.)

-- 
Jim Seidman (Drax), the accidental engineer.
"It doesn't have to work... they'll be paralyzed just from laughing at me."
							- Dr. Who, _Shada_
UUCP: ames!vsi1!hsv3!jls	         INTERNET: hsv3.UUCP!jls@apple.com