WNDCLASS是WIN32定义的“窗口类”,描述了一类窗口的共同特征和消息处理过程(WNDPROC),和C++的”类“完全扯不上任何关系。
CWnd是一个C++”类“,它封装了有关窗口句柄(HWND)的一系列WIN32操作,是一个窗口的”类“。
这两个东东不要扯到一起去,它们没关系。
WNDCLASS 它定义的是一种控件,例如定义一种className叫 "button"的按钮控件,,定义一个className叫"edit"的编辑框控件,WNDCLASS会指定该种控件的消息响应的回调函数。这样你每次去 CreateWindow的时候,指定一个 "button"的 className,看到的控件样子就是一个按钮,指定一个"edit",看到的控件样子就是一个编辑框。
而 CWnd 代表一个窗口,可以是一个对话框,可以是控件(按钮、编辑框……)或其它什么东西,可以说你电脑上看到的东西都可以是一个CWnd,比如一个对话框上面有两个按钮,那个每个按钮都可以是一个CWnd的类型,而这两个按钮都是由一个WNDCLASS创建过来的。
如果是用MFC编程的话,一般情况下是用不着 WNDCLASS的。WNDCLASS在SDK编程中被使用。
WNDCLASS用来设置一类窗口的属性,而CWnd可以看作是某一个WNDCLASS的实例