0

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を使用しています。

前もって感謝します。

4

1 に答える 1

5

OriginalProc直接電話しないでください。代わりにCallWindowProcを使用して呼び出します。

また、提供されたサンプルからはわかりにくいですが、OriginalProc複数のウィンドウで使用されていないことを確認してください。ここでは単一のグローバル変数のように見えますが、複数のウィンドウをサブクラス化していると思います。

于 2011-03-27T11:14:24.123 に答える