我对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不会被多个窗口使用。这里看起来它是一个全局变量,但我猜您是在子类化多个窗口。

07-24 14:12