Go4Expert

Go4Expert (http://www.go4expert.com/)
-   MFC (http://www.go4expert.com/articles/mfc-tutorials/)
-   -   Right mouse button event handler (http://www.go4expert.com/articles/mouse-button-event-handler-t381/)

shabbir 9Jul2005 10:49

Right mouse button event handler
 
1 Attachment(s)
MFC does not allow to trap all the events on the CButton control but some commonly used events like BN_CLICKED and BN_DOUBLECLICKED and so to trap a right mouse button events on a CButton MFC you need to derive a new class from the CButton.

MyButton.h
Code: CPP

class CMyButton : public CButton
{
// Construction
public:
  CMyButton();

// Attributes
public:

// Operations
public:

// Overrides
  // ClassWizard generated virtual function overrides
  //{{AFX_VIRTUAL(CMyButton)
  //}}AFX_VIRTUAL

// Implementation
public:
  virtual ~CMyButton();

  // Generated message map functions
protected:
  //{{AFX_MSG(CMyButton)
  afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
  //}}AFX_MSG

  DECLARE_MESSAGE_MAP()
};

MyButton.cpp
Code: CPP

BEGIN_MESSAGE_MAP(CMyButton, CButton)
  //{{AFX_MSG_MAP(CMyButton)
  ON_WM_RBUTTONUP()
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyButton message handlers

void CMyButton::OnRButtonUp(UINT nFlags, CPoint point)
{
  // TODO: Add your message handler code here and/or call default
  NMHDR hdr;
  hdr.code = NM_RCLICK;
  hdr.hwndFrom = this->GetSafeHwnd();
  hdr.idFrom = GetDlgCtrlID();
  TRACE("OnRButtonUp");
  this->GetParent()->SendMessage(WM_NOTIFY, (WPARAM)hdr.idFrom, (LPARAM)&hdr);
}

Now in your Dialog class you need to trap the Message that your CMyButton passes. The message passed is NM_RCLICK and you capture it as
Code:

  ON_NOTIFY(NM_RCLICK, IDC_BUTTON1, OnRClicked)
  ON_NOTIFY(NM_RCLICK, IDC_BUTTON2, OnRClicked)

Your member function must be declared with the following prototype:

afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );

afx_msg void OnRClicked( NMHDR * pNotifyStruct, LRESULT * result )

naresha1 31Jul2006 15:59

_beginthread
 
iam getting undeclared error in _beginthread
process.h included
this has been done
"Project|Settings|C/C++|Code generation|Use runtime library: (Debug)
> multithreaded"
getting unresolved error in linking:_fun()@1

solution plz

shabbir 31Jul2006 16:36

Re: Right mouse button event handler
 
Did you follow all the steps correctly. You probably have a call to a function _fun which you have not declared.

shabbir 31Jul2006 21:15

Re: Right mouse button event handler
 
naresha1 Please refer to Error Undeclared identifier error _beginthread.

parvez.yu 6Mar2008 15:02

Re: Right mouse button event handler
 
i m also getting an error

shabbir 6Mar2008 16:03

Re: Right mouse button event handler
 
Quote:

Originally Posted by parvez.yu
i m also getting an error

What is the error

parvez.yu 6Mar2008 16:47

Re: Right mouse button event handler
 
now its done actually there was some declaration problem

Panarchy 12Jun2009 11:20

Re: Right mouse button event handler
 
So... yeah.

I downloaded the files, your files, but can't compile them.

Are they complete files in there own, or what?

shabbir 12Jun2009 15:44

Re: Right mouse button event handler
 
Yes

Panarchy 14Jun2009 07:41

Re: Right mouse button event handler
 
Well it didn't compile for me...

Visual Studio 2008 Professional


All times are GMT +5.5. The time now is 18:16.