0

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)

私の派生CPaneDialogでは、これは機能しません。

4

1 に答える 1

3

MFCは、コマンドルーティングを使用して、コマンド(およびUIの更新)を処理できるコードに取得します。ルーティングを修正する場合、これは貼り付けコマンドとそのUI更新の両方を処理する必要があります。

この記事では、デフォルトのルーティングについて説明します。

この記事では、ルーティングを変更する方法について説明します。

基本的に、OnCmdMsgフレームでオーバーライドし、ペインでを呼び出してOnCmdMsg、メッセージを処理するかどうかを確認します。そうでない場合は、基本クラスを呼び出して標準処理を実行します。

于 2013-03-13T20:21:54.157 に答える