我想在我的程序中繼承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