我想在我的程序中继承RichEdit(这里是C++代码:http://dumpz.org/46182/)。 _native_log是richedit的重要组成部分。起初所有工作正常,LogWindow :: wndProc回调称为正常,但如果我在RichEdit中设置了一些文本或单击它们LogWindow :: wndProc停止工作(没有任何进一步调用它)。有什么想法我做错了什么?SetWindowLongPtr does not work properly
void LogWindow::replaceNativeLog(HWND native_log_handle) {
_native_log = native_log_handle;
SendMessage(_native_log, EM_GETOLEINTERFACE, 0, (LPARAM) &_rich_edit_ole);
_old_wnd_proc = (WNDPROC) SetWindowLongPtr(_native_log, GWLP_WNDPROC, (LONG) &wndProc);
}
LRESULT LogWindow::wndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) {
switch (Msg) {
case EM_STREAMIN:
break;
case WM_SETTEXT:
break;
};
return CallWindowProc(_old_wnd_proc, _native_log, Msg, wParam, lParam);
}
你的问题说SetWindowLongPtr,你的代码说SetWindowLong。不好。 – 2011-04-06 20:19:09
哦,它应该是代码中的SetWindowLongPtr。我在我的来源中更改了它,但忘记在dumpz.org上更改它。 – longedok 2011-04-06 20:29:28
演员应该是'LONG_PTR'而不是'LONG',你真的必须使用那些C风格的演员吗? – 2011-04-06 21:10:17