MDI windows, MDIClient and mdiclient

Boaz Harrosh boaz at
Sun Oct 19 12:18:29 CDT 2003

I am using MSDN July 2001.
Just look up WM_MDICREATE at the bottom of the page you have links to an 
over-view and all important functions/messages.

Basically you:
- Create any frame window but call MdiFrameProc for default processing.
- Create a child MDIClient as you have seen. sub-class it or use it as 
is. (It is a global class registered by Window/Wine)
- Create all MDIChild frames by doing an WM_MDICREATE on the MDIClient 
.Call MDIChildProc for default processing.
- Menu Creation/handling differs
- other stuff all taken care by MFC or WTL

Free Life

Shachar Shemesh wrote:

> Shachar Shemesh wrote:
>> Hi all,
>> I am trying to make an application work under wine. The app is 
>> probably an MFC app, that defenitely uses MDI. The problem boils down 
>> to this - it tries to create an MDI window by doing SendMessageA to a 
>> message of type "WM_MDICREATE". Here's the catch - the class it wants 
>> to use is in Unicode. This fails for obvious reasons.
>> I'm trying to find my way around the MDI setting, and phrase a 
>> regression test. However, I cannot seem to create the exact same 
>> circumstances. When looking at the original app using Spy++, I see 
>> that the application has a window from the very start of the app 
>> (long before it sends WM_MDICREATE), which does not appear to have 
>> WS_EX_MDICHILD set, but which has a child window of class "MDIClient".
>> Running the same app in Wine using --debugmsg +win,+class, I can see 
>> that it asks to open a window of class "mdiclient". I do not, 
>> however, see anywhere that such a class was ever registered! 
>> Furthermore - the call succeeds.
>> Can anyone enlighten me? Is this window necessary whenever an MDI is 
>> present? If so, what function do I use on the parent window to tell 
>> it that it is to be an MDI container?
>>             Many thanks,
>>                      Shachar 
> Hi all,
> I THINK I found the answer. I need to create a child window with the 
> "MDICLIENT" class, and pass it a CreateClientStruct. I'm not sure what 
> I need to put in the struct, but I'll guess I'll figure it out as I go 
> along.
> Now the question - is there a decent tutorial that does not require me 
> to dig through MFC and Wine sources, just so that I find how to do 
> 100% standard and supposedly documented things? Why can't I find it in 
>             Shachar

More information about the wine-devel mailing list