關于SubclassWindow()和SubclassDlgItem
msdn上的解析
CWnd::SubclassWindow
BOOL SubclassWindow( HWND hWnd );
Return Value
Nonzero if the function is successful; otherwise 0.
Parameters
hWnd
A handle to the window.
Remarks
Call this member function to "dynamically subclass" a window and attach it to this CWnd object. When a window is dynamically subclassed, windows messages will route through the CWnd’s message map and call message handlers in the CWnd’s class first. Messages that are passed to the base class will be passed to the default message handler in the window.
Subclass(子類化)是MFC中最常用的窗體技術之一。子類化完成兩個工作:一是把窗體類對象attach到一個windows窗體實體中(即把一個窗體的hwnd賦給該類)。另外就是把該類對象的消息加入到消息路由中,使得該類可以捕獲消息。
例如一個CEdit的派生類CMyEdit 只允許鍵入0-9, A-F, 則我們可以改寫WM_CHAR消息響應函數,然后用SubclassWindow子類化到對話框的一個文本框實體上(可用GetDlgItem), 這樣對話框上文本框的消息就會重定向到CMyEdit上。
SubDlgItem 與 SubclassWindow 區別不大,但前者只限定于對話框控件,后者是一切具有HWND的窗體
更詳細的討論可參見如下文章:
http://dev.csdn.net/article/16/16045.shtm
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成