Solved

HOW TO GET THE MOUSE POINT BY DOUBLE CLICKING

Posted on 2008-10-22
5
528 Views
Last Modified: 2013-11-20
I have tried to implement the editable CListCtrl by browsing some solutions on the internet.
In one solution, it coded:
void CEditableList::OnLButtonDblClk(UINT nFlags, CPoint point)
{
......
}
The parameter point is needed for the implementation.
However, my object of CListCtrl does not have the double clicking fucntion looks like above.
Mine is:
void SAMPLE_DLG::OnDblclkSampleList(NMHDR* pNMHDR, LRESULT* pResult)
where SampleList is the object name of the CListCtrl.
If I use the double-clicking function of the Dialog that contains the SampleList, it does has the thing that I need, which is void SAMPLE_DLG::OnLButtonDblClk(UINT nFlags, CPoint point) .
However, if I run it, and double click on the SampleList, SAMPLE_DLG::OnLButtonDblClk(...) is not executed. if I double click on any other area not on SampleList, SAMPLE_DLG::OnLButtonDblClk(...) is executed.
My question is that how to get the point while I double click on SampleList. Thanks.
0
Comment
Question by:lily1102
5 Comments
 
LVL 19

Expert Comment

by:LordOfPorts
Comment Utility
Is SAMPLE_DLG derived from CListCtrl? By its name it sound as if it is a perhaps derived from dialog and represents the surrounding dialog view perhaps and not a class derived from CListCtrl?

CListCtrl is derived from CWnd which has the OnLButtonDblClk member method http://msdn.microsoft.com/en-us/library/3efhe03w(VS.80).aspx so you would have to add the method to the custom CListCtrl derived class of SampleList if there is one, e.g.:

// .h of CListCtrl derived class, the data type of SampleList
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);

// .cpp of CListCtrl derived class, the data type of SampleList
void SampleListClass::OnLButtonDblClk(UINT nFlags, CPoint point)
{
    // To do code

   CWnd::OnLButtonDblClk(nFlags, point);
}




0
 
LVL 19

Accepted Solution

by:
alb66 earned 125 total points
Comment Utility
It should be the following:

void SAMPLE_DLG::OnDblclkSampleList(NMHDR* pNMHDR, LRESULT* pResult)
{
  LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE)pNMHDR;

  lpnmitem->iItem;               <------ row
  lpnmitem->iSubItem;         <------ column
  lpnmitem->ptAction;          <------ point

  ...

  *pResult = 0;
}

For greater details give a look at
http://msdn.microsoft.com/en-us/library/bb774867(VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb774771(VS.85).aspx
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
There are a few ways to achieve what you want.

The first you should try is to activate the VC6 wizard - CTRL+W -, choose the list control and add a handler for the NM_DBLCLK message. You should get a function like

void CTestDlg::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
{
     // todo: ...
     *pResult = 0;
}

Unfortunately the  pNMHDR doesn't tell you where the user has clicked. First you should try to *cast* the NMHDR struct to a NMLISTVIEW struct by

   LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);

(I mean I successfully have done that a few years ago).  

If successful the iItem and iSubItem member of the NMLISTVIEW should be valid and tell what you need to know.

If the members were garbage or both 0 you could retrieve the mouse position by GetCursorPos, transfer the windows coordinates to client coordianets and call the CListCtrl::HitTest to determine the cell where the use has clicked. Tell me if you need help for that.


 

0
 

Author Comment

by:lily1102
Comment Utility
Thanks for all.
I use alb66's comment and it works great.
0
 

Author Closing Comment

by:lily1102
Comment Utility
You are perfect.
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Define unique primary key 9 81
Smart Camera scanning and reading information 3 86
withoutTen challenge 14 87
unix example issues 18 44
In this article, I'll describe -- and show pictures of -- some of the significant additions that have been made available to programmers in the MFC Feature Pack for Visual C++ 2008.  These same feature are in the MFC libraries that come with Visual …
Introduction: Dynamic window placements and drawing on a form, simple usage of windows registry as a storage place for information. Continuing from the first article about sudoku.  There we have designed the application and put a lot of user int…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This video discusses moving either the default database or any database to a new volume.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now