我对edit和richedit都做了同样的事情,但是对于后者有一个访问冲突,为什么?对tabctrl也会发生同样的事情。我做错什么了?我怎样才能让它工作?
WNDPROC OriginalProc;
LRESULT CALLBACK MyProc(HWND h, UINT m, WPARAM w, LPARAM p)
{
return OriginalProc (h, m, w, p);// access violation for common controls
}
// elsewhere
HWND h = CreateWindow(....)
OriginalProc = (WNDPROC)SetWindowLong(h, GWL_WNDPROC, (LONG)MyProc);
我用的是vc++6。
提前谢谢。
最佳答案
您不应直接调用OriginalProc
,而应使用CallWindowProc来调用它。
此外,很难从您提供的示例中分辨出来,但请确保OriginalProc
不会被多个窗口使用。这里看起来它是一个全局变量,但我猜您是在子类化多个窗口。