Search code examples
windowswinapimsdninternals

MSDN terminology - Window procedure for the predefined control vs the control procedure


In a nutshell

Confused between the term "The window procedure for the predefined edit control window class" and "the edit control procedure".

In detail

I feel silly to ask this, but am I missing something from what is mentioned below?

from: MSDN

The window procedure for the predefined edit control window class carries out default processing for all messages that the edit control procedure does not process. When the edit control procedure returns FALSE for any message, the predefined window procedure checks the messages and carries out the following default actions.

*bold formatting by me

Let me specify my interpretation of above:

The window procedure for the predefined edit control window class: I believe this is the internal implementation of edit control's logic inside Windows (similar to any custom control we create).

The edit control procedure: Well this is something which I'm not able to interpret accurately. My wild guesses are:

  1. Likely: It's our custom WndProc that we may subclass from edit control if we need to modify edit control default behaviour (say tab/carriage return processing etc.)
    • My self debate: In this case MSDN would have mentioned word "subclass" explicitly at least somewhere in article.
  2. Unlikely: It's some abstracted/specialized internal Wndproc for windows that is class specific.
    • My self debate: If this was the case, there would be some mention of this somewhere.

What further adds to the confusion is the "When the edit control procedure returns FALSE for any message, the predefined window procedure checks the messages and carries out the following default actions" mentioned above. I believe the return value from a WndProc is always LRESULT and is message specific, and this TRUE/FALSE thing applies generally to DialogProcs. So what's the piece I am missing? Also even if I believe its a WndProc, return value does not decide the default processing, our explicitly calling DefWindowProc()/CallWindowProc() decides the default processing. So what is the return based processing above page talks about?


Solution

  • From the comments and research, it looks like this is to do with slightly inaccurate documentation on MSDN. Though I am sure folks at Microsoft can add some sense to it, maybe something related to internal implementation.