委托OnUpdate . .消息从CMainFrame在MFC

Delegating OnUpdate... messages from CMainFrame in MFC

本文关键字:MFC CMainFrame OnUpdate 消息 委托      更新时间:2023-10-16

我正在使用MFC,并有一个主框架,它从工具栏接收WM_PASTE, WM_COPY消息等。我要做的是将此消息传递给具有焦点的CPaneDialog,因为这是我想要粘贴的文本的位置。

我已经知道如何发送消息到正确的视图,通过使用这个:

void CMainFrame::OnEditPaste()
{
  GetFocus()->SendMessage(WM_PASTE, 0);
}

我现在要做的是询问表单是否可以接收粘贴消息。我想我可以通过传递命令ui消息来做到这一点……但我该怎么做呢?

void CMainFrame::OnUpdateEditPaste(CCmdUI *pCmdUI)
{
  if(GetFocus())
  {
    GetFocus()->???
  }
}

如果有更好的方法,也请告诉我。

我试过了

ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, &CDerivedPaneDialog::OnUpdateEditPaste)

MFC使用命令路由将命令(和UI更新)获取到可以处理它们的代码。如果你修复了路由,这应该可以处理粘贴命令和UI更新。

本文描述了默认路由。

这篇文章描述了如何修改路由。

基本上,你在你的框架中覆盖OnCmdMsg,并调用面板中的OnCmdMsg,看看它是否想要处理消息。如果没有,则调用基类来执行标准处理。