お世話になります。
早速質問させて頂きます。
リッチエディットのUndo(Ctrl+Z)を無効(捕まえる)にする方法を教えて下さい。
理由は、UNDO処理を自分で実装する為です。
KeyDownイベントにてキー操作によるUndoは無効に出来たのですが、
メニューバーの「元に戻す」を無効にすることが出来ません。
EM_UNDO/WM_UNDOなどのメッセージを捕まえようとしたのですが
引っかかりません。
どなたかご存知の方、お願いします。
開発環境はVC6.0、MFCです。
>KeyDownイベントにてキー操作によるUndoは無効に出来たのですが、
>メニューバーの「元に戻す」を無効にすることが出来ません。
>EM_UNDO/WM_UNDOなどのメッセージを捕まえようとしたのですが
>引っかかりません。
目的は「元に戻す」のハンドリングではないんですよね?
VC++2005で試してみたところEM_UNDOの方は捕まえられました。
(環境がVC6とのことなので、使用しているリッチエディットの
バージョンによる動作の違いという可能性もありますが)
ご返答ありがとうございます。
>目的は「元に戻す」のハンドリングではないんですよね?
すいません。書き方に問題がありました。
「元に戻す」のハンドリングをしたいのです。
>VC++2005で試してみたところEM_UNDOの方は捕まえられました。
捕まえ方を教えて頂けますか?
当方では下記の方法で試したのですが捕まえられませんでした。
BOOL XXX::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == EM_UNDO ) {
----- 処理 -----
}
}
お願いします。
追記です。
CRichEditViewをViewに貼り付けてCRichEditCtrlにキャストして使用している
のでPreTranslateMessageはリッチエディットのフィルターです。
>すいません。書き方に問題がありました。
>「元に戻す」のハンドリングをしたいのです。
であれば、「元に戻す」のメニューIDに対応するハンドラを追加して
処理を書くだけでもいいと思いますが。
>捕まえ方を教えて頂けますか?
>当方では下記の方法で試したのですが捕まえられませんでした。
ビューのメッセージマップにEM_UNDOを手動で追加して
ハンドリングしました。
PreTranslateMessageでは取れませんでした。
>であれば、「元に戻す」のメニューIDに対応するハンドラを追加して
>処理を書くだけでもいいと思いますが。
出来ました!ありがとうございます。
それでもう一つ問題が出てきたのですが
VC6.0のリッチエディットはUndoを1回しか実行出来ない為
1回Undoを実行するとメニューバーの「元に戻す」が自動的にグレー表示されます。
これを回避する方法をご存知でしたら、お願いします。
>1回Undoを実行するとメニューバーの「元に戻す」が自動的にグレー表示されます。
>これを回避する方法をご存知でしたら、お願いします。
メニューの使用可否はUPDATE_COMMAND_UIのハンドラで制御します。
引数のpCmdUI->Enable()で切り替えできたはず。
>メニューの使用可否はUPDATE_COMMAND_UIのハンドラで制御します。
>引数のpCmdUI->Enable()で切り替えできたはず。
出来ました!
subaruさん、最後まで親切に教えて頂き
ありがとうございました。