15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


CListCtrl::HitTest()

Calvin Tarlton -- Tarlton@iftech.com
Tuesday, October 01, 1996

Environment: VC++ 4.2, NT 4.0

In my application, I use the CListCtrl::HitTest() to determine which
item was clicked. Here's the code I use:

	const MSG* pMsg = GetCurrentMessage();

	CPoint ptClicked = pMsg->pt;
	ScreenToClient( &ptClicked );

	CPoint ptLabel = ptClicked;
	ptLabel.x = 0;

	int nItemLabel = m_pThisList->HitTest( ptLabel );

On NT 3.51 this code works fine, but on Windows 95 and NT 4.0, HitTest()
always returns -1.

Why?

----------------------------------------------------------------------
Calvin Tarlton                                tarlton@iftech.com
Software Developer                            (919) 876-1566 x17 voice
Interface Technologies, Inc.                  (919) 876-1779 fax
Highwoods Office Center, 3120 Poplarwood Ct., Raleigh, NC 27604

Interface Technologies specializes in software design and programmer
training on Windows NT and Windows 95 platforms
For more information, visit http://www.iftech.com
----------------------------------------------------------------------




Roger Onslow/Newcastle/Computer Systems Australia/
Thursday, October 03, 1996

[Mini-digest: 3 responses]

Try 
 ptLabel.x = 1; // not 0

Roger Onslow
-----From: "GoroKhM1" 

Environment: VC++ 4.2, NT 4.0

You wrote:
> snip
>On Windows 95 and NT 4.0, HitTest() always returns -1.

That is working fine in my app in Win95 + VC 4.x:

  CPoint cpClick = ::GetMessagePos();
  ScreenToClient(&cpClick);
  int iHitRow = m_pList->HitTest(cpClick);

-Mark

-----From: Calvin Tarlton 

Thanks to all that responded.  I changed it to x=1 and that still didn't
work.  I then realized that other higher values of x did work.  Anyway,
it turns out that items in the list start at x=2.  Go figure...

[Moderator's note: You may recall that my personal reply to you
suggested using 4 instead of 0 or 1.  There was a recent discussion
on getting the Edit control of a ComboBox that tipped me off.]

Also, GetCurrentMessage()->pt seems to be the same as GetMessagePos().

----------------------------------------------------------------------
Calvin Tarlton                                tarlton@iftech.com
Software Developer                            (919) 876-1566 x17 voice
Interface Technologies, Inc.                  (919) 876-1779 fax
Highwoods Office Center, 3120 Poplarwood Ct., Raleigh, NC 27604

Interface Technologies specializes in software design and programmer
training on Windows NT and Windows 95 platforms
For more information, visit http://www.iftech.com
----------------------------------------------------------------------




| Вернуться в корень Архива |