mfc subclasswindow attach setwindowlong使用区别

1、

CWnd::Attach

BOOL Attach( HWND hWndNew );

返回值:如果成功,则返回非零值;否则返回0。

参数: hWndNew 指定了Windows窗口的句柄。  

说明:将一个Windows窗口与CWnd对象相连接。

CWnd::SubclassWindow

BOOL SubclassWindow( HWND hWnd );

返回值:如果函数成功,则返回非零值;否则返回0。

参数: hWnd 窗口句柄。  

说明:
调用这个成员函数以动态子类化一个窗口,并将它与这个CWnd对象相连接。当窗口被动态子类化时,窗口消息将通过CWnd的消息映射,并首先调用CWnd类中的消息处理函数。发送给基类的消息将被传递给窗口的缺省消息处理函数。
这个成员函数将Windows控件与CWnd对象连接起来,并替换窗口的WndProc和AfxWndProc函数。这个函数在CWnd对象中保存旧的WndProc的指针。

SetWindowLong 修改窗口的属性.

 

2、

SubClassWindow、SubClassDlgItem这两个约等于,类似包装,方便使用
DDX会调用SubClassWindow,SubClassWindow会调用Attach
最终的目的是绑定控件和你的衍生类

我最常用的当然是DDX,系统自己搞定,自己不写代码
然后是SubClassWindow/Attach,视情况调用Unsub/Untach
SubClassDlgItem更少用

一般用在Oninitdialog

 

你可能感兴趣的:(subClass)