-
-
[求助]为什么子类化了RichEdit,就不再产生WM_CHAR消息了?
-
发表于:
2008-5-16 11:30
5722
-
[求助]为什么子类化了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);
}
}
这样就可以了,因为返回值的问题~~~
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课