+// utility used by wxListCtrl::MSWOnNotify and by wxDataViewHeaderWindowMSW::MSWOnNotify
+int WXDLLIMPEXP_CORE wxMSWGetColumnClicked(NMHDR *nmhdr, POINT *ptClick)
+{
+ wxASSERT(nmhdr && ptClick);
+
+ // find the column clicked: we have to search for it
+ // ourselves as the notification message doesn't provide
+ // this info
+
+ // where did the click occur?
+#if defined(__WXWINCE__) && !defined(__HANDHELDPC__) && _WIN32_WCE < 400
+ if (nmhdr->code == GN_CONTEXTMENU)
+ {
+ *ptClick = ((NMRGINFO*)nmhdr)->ptAction;
+ }
+ else
+#endif //__WXWINCE__
+ if ( !::GetCursorPos(ptClick) )
+ {
+ wxLogLastError(_T("GetCursorPos"));
+ }
+
+ if ( !::ScreenToClient(nmhdr->hwndFrom, ptClick) )
+ {
+ wxLogLastError(_T("ScreenToClient(header)"));
+ }
+
+ int colCount = Header_GetItemCount(nmhdr->hwndFrom);
+
+ RECT rect;
+ for ( int col = 0; col < colCount; col++ )
+ {
+ if ( Header_GetItemRect(nmhdr->hwndFrom, col, &rect) )
+ {
+ if ( ::PtInRect(&rect, *ptClick) )
+ {
+ return col;
+ }
+ }
+ }
+
+ return wxNOT_FOUND;
+}
+