-
-
[求助]为什么子类化了RichEdit,就不再产生WM_CHAR消息了?
-
发表于:
2008-5-16 11:30
5721
-
[求助]为什么子类化了RichEdit,就不再产生WM_CHAR消息了?
因为我在RichEdit中添加右键菜单,所以用SetWindowLong子类化了一下
但,这样之后就无法再输入任何字符,即不再产生WM_CHAR消息
我在OD中设消息断点也断不下来
只要把SetWindowLong注释掉,一切都又正常了…………
代码如下:
switch(message)
{
case WM_INITDIALOG:
hChildWnd = hDlg;
hWinEdit = GetDlgItem(hDlg, IDC_RICHEDIT);
hOldWndProc = SetWindowLong(hWinEdit, GWL_WNDPROC, (long)RichEditWndProc); ;子类化
return 1;
回调函数:
LRESULT CALLBACK RichEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
POINT pt = {0};
if (uMsg == WM_RBUTTONDOWN)
{
::GetCursorPos(&pt);
::TrackPopupMenu(hChildPopMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hChildWnd, NULL);
return 1;
}
else
{
return ::CallWindowProc((WNDPROC)hOldWndProc, hWnd, uMsg, wParam, lParam);
}
}
这样就可以了,因为返回值的问题~~~
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法