I think the WM_NCCREATE (non-client CREATE) comes in before the WM_CREATE, both have a CREATESTRUCT but for reasons I cannot entirely remember (but i'm sure involved avoiding horrible crashes) I check for either with a logical 'OR' to get the CREATESTRUCT etc.
I think I was probably worried about ms changing things around in the future - I seem to remember reading in msdn somewhere or other that we should not rely on the order in which msgs came in as this would be bad programming technique! (yeh, I thought it was pretty funny too )
But here's a question that's been on my mind for a while: so called 'race conditions' ie when you have a whole bunch of windows that are using the same StaticWndProc is there a possibility (particularly with multiple-threads) where a crash could occur due to the volume of processing that the one fn is having to deal with? Maybe that's a stupid question...but...?