使用GWL_WNDPROC子类化richedit的问题

时间:2011-03-27 10:59:58

标签: c winapi subclassing richedit common-controls

我为编辑和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.

提前致谢。

1 个答案:

答案 0 :(得分:5)

您不应直接致电OriginalProc;使用CallWindowProc代替调用它。

此外,从您提供的示例中很难说清楚,但请确保多个窗口未使用OriginalProc。它看起来这是一个单一的全局变量,但我猜你正在为多个窗口创建子类。