Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / desktop / MFC

Button behavior - single button multiple behaviour

3.67/5 (2 votes)
15 May 2010CPOL 7.4K  
You can use one single button for more than one behaviour.Here is how.If you have the coordinates of a point in device coordinates and want to find the corresponding position in logcal view - use CDC::DPtoLP to convert the device coordinates to logcal coordinates.Call on...
You can use one single button for more than one behaviour.

Here is how.

If you have the coordinates of a point in device coordinates
and want to find the corresponding position in logcal view -
use CDC::DPtoLP to convert the device coordinates to logcal coordinates.
Call on OnPrepareDC first to set the mapping mode and factor.


For example: Here is a WM_LEFTBUTTONDOWN handler that performs a simple hit test
to determine whether the click point lies in the upper or lower half of the logcal view.

CPoint objects passed to OnLButtonDown and other mouse message handlers
always contain device coordinates so conversion is essetial.

void CMyView::OnLButtonDown(UINT nFlags, CPoint Point)
{
  CPoint pos=Point;
  CClientDC dc (this);
  OnPrepareDC(&dc);     
  dc.DPtoLP(&pos);
  CSize size=GetTotalSize();

  if(::abs( pos.y ) < (size.cy/2) )
  {
    //Upper half was clicked
  }
   else
  {
    //lower half was clicked
  }
 

}



...

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)