重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ダイアログにリッチエディットボックスを貼り付けています。
文字が入力されるたびにUPDATEメッセージを受け取りたいのですが。
下記注釈の意味がわからず困っています。OnInitDialog()に何かを書くということは判るのですが。ヘルプでも見つけることが出来ませんでした。
どうかこの私でも判るよう教えてください。よろしくお願いいたします。m(_ _)m

void CCtypeDlg::OnUpdateRichedit()
{
// TODO: これが RICHEDIT コントロールの場合、コントロールは、lParam マスク
// 内での論理和の ENM_UPDATE フラグ付きで EM_SETEVENTMASK
// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
// ライドしない限りこの通知を送りません。
// TODO: この位置にコントロール通知ハンドラ・・・

A 回答 (1件)

TODOの日本語は難しいですね(^_^;



意味的には、
通知を受け取るために、RichEditコントロールに EM_SETEVENTMASK メッセージを投げなさい。
その際の lParam には ENM_UPDATE という値の論理和をとりましょう。
これを CDialog::OnInitDialog() 関数をオーバーライドしてそこに書きなさい。
というようなことでしょうか。
RichEditコントロールの通知メッセージはイベントマスクというもので管理されていて、それをうまく設定してやらないとメッセージが通知されないのですね。


コードではこんな感じになります。
dwEventMask = SendMessage(hRichEdit, EM_GETEVENTMASK, 0, 0);
dwEventMask |= ENM_UPDATE;
SendMessage(hRichEdit, EM_SETEVENTMASK, 0, (LPARAM)dwEventMask);


RichEditコントロールに変数が割り当ててある場合はこんな感じでしょうか。
dwEventMask = m_ctlRichEdit.GetEventMask();
dwEventMask |= ENM_UPDATE;
m_ctlRichEdit.SetEventMask(dwEventMask);


MSDN onlineにいろいろ情報が載ってるのでそちらを参照してください。
日本語サイトは情報量が少ないので、英語サイトをオススメします。

参考URL:http://msdn.microsoft.com/library/default.asp?ur …
    • good
    • 0
この回答へのお礼

おかげさまで解決しました。
イベントマスクかー。まだまだ知らないことが多すぎると痛感。
オンラインヘルプもこれからは活用したいと思います。
英語を読む努力も必要ですね。
いつもいつも私の拙い質問に丁寧な回答を頂き本当にありがとうございます。
m(_ _)m

お礼日時:2001/08/24 09:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!