通常 win32 程序 需要 子类化 控件时。有2种 保存原 WinProc 的方法:
1.
以子类化 edit 控件 为例: m_hEdit=CreateEdit(hwnd);
WNDPROC EdOldProc = (WNDPROC)SetWindowLong(m_hEdit, GWL_WNDPROC, (LONG)EDProc);
SetProp(m_hEdit,// handle of window
"EditOldProc",  // atom or address of string
EdOldProc);
这里 SetProp 就是 把 窗口 的 原 winproc (即:EdOldProc) 保存到 窗口中 去,以便 :LRESULT CALLBACK EDProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{// get oldproc
WNDPROC OldEdProc=(WNDPROC)GetProp(hWnd,"EditOldProc");
在 新窗口 proc 中 调用 原 winproc:
return CallWindowProc(OldEdProc, hWnd, Msg, wParam, lParam);2.
 其实 可以 用 一个 全局 变量来 保存它:
WNDPROC g_OldEdProc;方法一 可以 不用全局变量,就不容易 搞错。