FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour How to find MDICHILD windows
Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
How to find MDICHILD windows
Posted: Tue Feb 19, 2008 06:22 PM

Thanks in advance
Otto

Posts: 4043
Joined: Wed Dec 19, 2007 06:40 PM
Mdi-Childs
Posted: Tue Feb 19, 2008 07:54 PM

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

Since 1995 ( the first release of FW 1.9 )

i work with FW.

If you have any questions about special functions, maybe i can help.
Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
How to find MDICHILD windows
Posted: Tue Feb 19, 2008 08:44 PM

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

Posts: 4840
Joined: Fri Nov 18, 2005 04:52 PM
How to find MDICHILD windows
Posted: Wed Feb 20, 2008 07:27 AM

Otto,

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

wndMain():oWndClient:aWnd[ ]

James

FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10
Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
How to find MDICHILD windows
Posted: Wed Feb 20, 2008 07:30 AM

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

Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
How to find MDICHILD windows
Posted: Wed Feb 20, 2008 07:35 AM

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

Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
How to find MDICHILD windows
Posted: Wed Feb 20, 2008 08:28 AM

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()

Continue the discussion