• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 280
  • Last Modified:

MFC Window Procedure

With 32-bit version of MFC, Windows classes are no longer registered with the AfxWndProc() function - instead they are registered with DefWindowProc() as the message handler. However, AfxWndProc() is still there and it dispatches messages to various CWnd derived objects. My question is:
What is the main purpose behind using DefWindowProc() as the registered window procedure and yet how do messages end up in AfxWndProc()?
0
a_turtle
Asked:
a_turtle
1 Solution
 
pagladasuCommented:
The primary reason as to why Microsoft shifted from using AfxWndProc() as the registered window procedure to using DefWindowProc() is to support 3D Controls, which works through Microsoft's CTL3D.DLL. In order to have CTL3D functionality,
MFC registers everything with DefWindowProc(), then during _AfxStandardSubclass(), hooks up CTL3D, and then finally adds a subclass on top of CTL3D by installing AfxWndProc().

Thanks.
pagladasu
0
 
a_turtleAuthor Commented:
Thanks. Could you please explain in more details about what really happens.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now