CRichEditCtrlのUndoについて – プログラミング – Home

通知
すべてクリア

[解決済] CRichEditCtrlのUndoについて


taka
 taka
(@taka)
ゲスト
結合: 23年前
投稿: 117
Topic starter  

お世話になります。

早速質問させて頂きます。

リッチエディットのUndo(Ctrl+Z)を無効(捕まえる)にする方法を教えて下さい。
理由は、UNDO処理を自分で実装する為です。

KeyDownイベントにてキー操作によるUndoは無効に出来たのですが、
メニューバーの「元に戻す」を無効にすることが出来ません。
EM_UNDO/WM_UNDOなどのメッセージを捕まえようとしたのですが
引っかかりません。

どなたかご存知の方、お願いします。

開発環境はVC6.0、MFCです。


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>KeyDownイベントにてキー操作によるUndoは無効に出来たのですが、
>メニューバーの「元に戻す」を無効にすることが出来ません。
>EM_UNDO/WM_UNDOなどのメッセージを捕まえようとしたのですが
>引っかかりません。

目的は「元に戻す」のハンドリングではないんですよね?
VC++2005で試してみたところEM_UNDOの方は捕まえられました。
(環境がVC6とのことなので、使用しているリッチエディットの
バージョンによる動作の違いという可能性もありますが)


返信引用
taka
 taka
(@taka)
ゲスト
結合: 23年前
投稿: 117
Topic starter  

ご返答ありがとうございます。

>目的は「元に戻す」のハンドリングではないんですよね?
すいません。書き方に問題がありました。
「元に戻す」のハンドリングをしたいのです。

>VC++2005で試してみたところEM_UNDOの方は捕まえられました。
捕まえ方を教えて頂けますか?
当方では下記の方法で試したのですが捕まえられませんでした。

BOOL XXX::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == EM_UNDO ) {
----- 処理 -----
}
}

お願いします。


返信引用
taka
 taka
(@taka)
ゲスト
結合: 23年前
投稿: 117
Topic starter  

追記です。

CRichEditViewをViewに貼り付けてCRichEditCtrlにキャストして使用している
のでPreTranslateMessageはリッチエディットのフィルターです。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>すいません。書き方に問題がありました。
>「元に戻す」のハンドリングをしたいのです。
であれば、「元に戻す」のメニューIDに対応するハンドラを追加して
処理を書くだけでもいいと思いますが。

>捕まえ方を教えて頂けますか?
>当方では下記の方法で試したのですが捕まえられませんでした。
ビューのメッセージマップにEM_UNDOを手動で追加して
ハンドリングしました。
PreTranslateMessageでは取れませんでした。


返信引用
taka
 taka
(@taka)
ゲスト
結合: 23年前
投稿: 117
Topic starter  

>であれば、「元に戻す」のメニューIDに対応するハンドラを追加して
>処理を書くだけでもいいと思いますが。
出来ました!ありがとうございます。

それでもう一つ問題が出てきたのですが
VC6.0のリッチエディットはUndoを1回しか実行出来ない為
1回Undoを実行するとメニューバーの「元に戻す」が自動的にグレー表示されます。
これを回避する方法をご存知でしたら、お願いします。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>1回Undoを実行するとメニューバーの「元に戻す」が自動的にグレー表示されます。
>これを回避する方法をご存知でしたら、お願いします。

メニューの使用可否はUPDATE_COMMAND_UIのハンドラで制御します。
引数のpCmdUI->Enable()で切り替えできたはず。


返信引用
taka
 taka
(@taka)
ゲスト
結合: 23年前
投稿: 117
Topic starter  

>メニューの使用可否はUPDATE_COMMAND_UIのハンドラで制御します。
>引数のpCmdUI->Enable()で切り替えできたはず。
出来ました!

subaruさん、最後まで親切に教えて頂き
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました