Defining a custom *constructor* (not initializer!)

Mehrdad wfunction at hotmail.com
Fri May 11 07:04:00 PDT 2012


> I'm probably not getting the entire picture here, but I assume 
> from your description that CreateWindow directly calls your 
> WndProc.  If that is the case, isn't it guaranteed that after 
> the base ctor runs the class has received the WM_CREATE 
> message?  I mean, the only issue happens when you are not quite 
> through the ctor chain, no?

Right, what I'm saying is that it's the *subclass* who needs the 
notification more, than anyone else (although, for other reasons, 
the base class needs it as well).
The whole point is to get the messages to the *subclasses* 
properly...

>> Or something else... there are a ton of situations that can 
>> happen -- such as MDI window creation, etc. -- that don't 
>> happen too often, but happen often enough that you simply 
>> can't assume you can get by without allowing them to handle 
>> the messages.)
>
> You can use another mechanism to decide.  for instance:
>
> class Window
>    private bool inCreateWindow = false;
>    ...
>    final public void processMessage(int message)
>    {
>        if(inCreateWindow && message == WM_CREATE)
>        {
>            // handle specially
>        }
>        ...
>    }
>    this()
>    {
>       inCreateWindow = true;
>       window = CreateWindow(&processMessage);
>       inCreateWindow = false; // all WM_CREATE messages will 
> now go through normal mechanism.
>    }
> }
>
> -Steve




More information about the Digitalmars-d mailing list