MFC CRICHEDITCRL::预翻译消息

MFC CRICHEDITCRL::预翻译消息,mfc,Mfc,在Windows10操作系统中,在基于MFC对话框的应用程序中,我将CRICHEDITCRL子类化,在预翻译消息中,我处理ctrl+x。在ctrl+x上,我确认用户是否删除文本 case 88: //ctrl+x if(IDNO==AfxMessageBox(_T("Do you want to delete selected text?"),MB_YESNO|MB_ICONQUESTION)) return true; break; 如果我执行AfxMessageBox,

在Windows10操作系统中,在基于MFC对话框的应用程序中,我将CRICHEDITCRL子类化,在预翻译消息中,我处理ctrl+x。在ctrl+x上,我确认用户是否删除文本

case 88: //ctrl+x
if(IDNO==AfxMessageBox(_T("Do you want to delete selected text?"),MB_YESNO|MB_ICONQUESTION)) return true;
break;
如果我执行AfxMessageBox,预翻译消息将接收消息WM_CHAR,其中CHAR x紧跟在ctrl+x之后,并且在richeditctrl中键入字符x。。如果我没有在ctrl+x上调用AfxMessageBox,则预翻译消息不会收到消息WM_CHAR with CHAR x

如何避免预翻译消息接收带有CHAR x的WM_CHAR?我需要与用户确认是否删除文本


谢谢

没有足够的信息来真正诊断问题。IDK,这篇文章展示了如何写一个问题。但是,就个人而言,我不会像你这样做。相反,我会在加速器表中为Ctrl-X和命令ID\u EDIT\u CLEAR添加一个条目。我会在视图或文档类中为ID\u EDIT\u CLEAR添加一个命令处理程序,并在那里提示用户。然后,如果他们确认要清除,请使用rich edit控件清除它,但这是非标准操作。Ctrl-X不应该是“删除”。它应该是“剪切”。实际上,从UI的角度来看,我不喜欢你在(丰富的)编辑控件中提示用户删除。在控件中启用“撤消”,以便在按下Ctrl-X时,它只执行它应该执行的操作。如果他们不喜欢,则按Ctrl-Z键撤消。