質問させてください
OS:WinXP VC++6(SP5) MFC
本題
フォームビューに貼り付けたEDITコントロール上で「右ボタン」が
押されたことを検出するにはどうしたらよいのでしょうか
フォームビュー上のコントロールの貼り付けていない部分では
WM_LBUTTONDOWN→OnLButtonDownは可能なのですが
EDITコントロール上では使用できないみたいなので
どうしたらいいのか教えてください
クラスの追加で「新規」
クラス名:CMyEdit
基本クラス:CEdit
ビューのヘッダーに
#include MyEdit.h
を追加
メンバ変数の追加で、マウスのクリックを処理したいエディットコントロールを選び
メンバ変数:任意
カテゴリ:コントロール
変数のタイプ:CMyEdit
あとはCMyEditクラスのWM_RBUTTONDOWNやWM_RBUTTONDOWNで処理をするか
メッセージを飛ばせば良いと思います
BOOL CMyView::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_LBUTTONDOWN) {
CWnd *wnd = GetDlgItem(IDC_EDIT1);
CRect r;
wnd->GetWindowRect(r);
if (r.PtInRect(pMsg->pt))
TRACE(LBD on Edit\n);
}
return CFormView::PreTranslateMessage(pMsg);
}
私はこんな風にしてますが、今からkuさんの方法も試して見ます。
kuさんの方法のほうがスマートなのかな?
ケースバイケース?
試してみました。なんかかっこいいですね。
コントロールにメンバ変数をあてるのはあまり好きではなかったけど、
こんな使い方があったんですね。基本でしたか?
是非、うまく使ってみたいと思います。
kuさん ありがとうございます
こんな風にしてメッセージ受け取れるなんて知りませんでした
クラスウィザードを使う方法は、私のような入門者にはとてもありがたいことです
たいちう さんありがとうございます
参考に勉強してみたいと思います