Page 1 of 1

How to find MDICHILD windows

Posted: Tue Feb 19, 2008 6:22 pm
by Otto
Thanks in advance
Otto

Mdi-Childs

Posted: Tue Feb 19, 2008 7:54 pm
by ukoenig
Hello Otto,

As far i know, there is only a function
IsChild()
It returns, if the active window is a Child.
The other direction i don' think so, that there
is a function.

Regards
Uwe

Posted: Tue Feb 19, 2008 8:44 pm
by Otto
Hello Uwe,

I read that you have to use FindWindowEx API call.
But I don’t know how to use this function. Maybe someone has a code example.
//DLL32 Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As Long,ByVal hwndChildAfter As Long,ByVal lpszClass As String,ByVal lpszWindow As String) As Long

Regards,
Otto

Posted: Wed Feb 20, 2008 7:27 am
by James Bott
Otto,

I believe all the MDI child windows are stored in this array.

wndMain():oWndClient:aWnd[ ]

James

Posted: Wed Feb 20, 2008 7:30 am
by Otto
There are many powerful functions available in the Windows API,
so there is little doubt that some developers will want to a call Windows API function from time to time.

As there is not always a FIVEWIN GURU who has time to help I tried to find out how to do this by my self.


How I change a API declaration to FWH

1) LIB "" at the end of the declaration

2) Change the ALIAS clause to PASCAL FROM

3) delete all: ByVal, ByRef

4) change all As String, Long, ... to Uppercase

5) to call the function I found out that you have to use instead of a vbNullString NIL in FWH
example: hwndClient = FindWindowEx(hWnd, 0, "mdiclient", NIL)


DLL32 Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
ByVal hwndParent As Long, _
ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, _
ByVal lpszWindow As String) As Long


DLL32 Function FindWindowEx ( hwndParent AS LONG, hwndChildAfter AS LONG, lpszClass AS STRING,;
lpszWindow AS STRING) AS LONG PASCAL FROM "FindWindowExA" LIB "user32"




links: http://www.johnsmiley.com/cis18/Smiley026.pdf

Posted: Wed Feb 20, 2008 7:35 am
by Otto
Hello James,
Thank you for your answer.
I will try your suggestion. I had not read your post before posting.

Could you please check if my guidance “how to convert a API call to FWH” is correct ?

Thanks in advance
Otto

Posted: Wed Feb 20, 2008 8:28 am
by Otto
Hello James,

if Gurus have time you get what you need. Thanks again.
Now it works.
Regards,
Otto

if Len( oWnd:oWndClient:aWnd ) > 0
msginfo("hWnd: " + str(oWnd:oWndClient:aWnd[1,1]) + " "+ GetWindowText( oWnd:oWndClient:aWnd[1,1] ) )
endif
oWnd:CloseAll()