Проблема с подклассами richedit с использованием GWL_WNDPROC - PullRequest
0 голосов
/ 27 марта 2011

Я делаю эту вещь как для редактирования, так и для рихедита, но для последнего есть нарушение прав доступа, почему? То же самое происходит, когда делается для 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 Ответ

5 голосов
/ 27 марта 2011

Вы не должны звонить OriginalProc напрямую; вместо этого используйте CallWindowProc .

Кроме того, по примеру, который вы дали, трудно понять, но убедитесь, что OriginalProc не используется несколькими окнами. Здесь выглядит, что это одна глобальная переменная, но я предполагаю, что вы подклассифицируете несколько окон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...