void CDropWnd::OnLButtonDown(UINT nFlags, CPoint point) { if( m_rcSizeHandle.PtInRect( point ) ) { m_bResizing = true; m_ptLastResize = point; CRect rcClient; GetClientRect( &rcClient ); m_nMouseDiffX = rcClient.Width() - point.x; m_nMouseDiffY = rcClient.Height() - point.y; return; } // // Clean up the code below... // CRect rc; CRect rcVScroll(0,0,0,0); GetClientRect( &rc ); DWORD dwStyle = GetStyle(); // Take away vertical scroll if( rc.PtInRect( point ) ) { } else { // // Calc the point in the parent(PropertyListBox) CWnd* pParent = m_pComboParent->GetParent(); CRect rcParentClient; CRect rcParentWnd; pParent->GetClientRect( &rcParentClient ); pParent->GetWindowRect( &rcParentWnd ); CPoint pt = point; ClientToScreen( &pt ); pt.x -= rcParentWnd.left; pt.y -= rcParentWnd.top; CAdvComboBox* pList = static_cast<CAdvComboBox*>(m_pComboParent); if( !pList->PointInWindow( pt ) ) { ReleaseCapture(); // CString str; // str.Format( "MousePos (NOT PtInRect): X:%d, y:%d\n", pt.x, pt.y ); // OutputDebugString( str ); m_pComboParent->PostMessage( WM_DESTROY_DROPLIST ); } else { // CString str; // str.Format( "MousePos in combo\n " ); // OutputDebugString( str ); ReleaseCapture(); m_pComboParent->PostMessage( WM_DESTROY_DROPLIST ); } // // Send input to parent /* INPUT input; input.type = INPUT_MOUSE; input.mi.dx = pt.x; input.mi.dy = pt.y; input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; input.mi.time = 0; SendInput( 1, &input, sizeof(INPUT) ); */ } CWnd::OnLButtonDown(nFlags, point); }
void CDropWnd::OnLButtonDown(UINT nFlags, CPoint point) { XLISTCTRL_TRACE(_T("in CDropWnd::OnLButtonDown\n")); if( m_rcSizeHandle.PtInRect( point ) ) { m_bResizing = true; m_ptLastResize = point; CRect rcClient; GetClientRect( &rcClient ); m_nMouseDiffX = rcClient.Width() - point.x; m_nMouseDiffY = rcClient.Height() - point.y; return; } // // Clean up the code below... // CRect rc; CRect rcVScroll(0,0,0,0); GetClientRect( &rc ); // Take away vertical scroll if( rc.PtInRect( point ) ) { } else { // // Calc the point in the parent(PropertyListBox) CWnd* pParent = m_pComboParent->GetParent(); CRect rcParentClient; CRect rcParentWnd; pParent->GetClientRect( &rcParentClient ); pParent->GetWindowRect( &rcParentWnd ); CPoint pt = point; ClientToScreen( &pt ); pt.x -= rcParentWnd.left; pt.y -= rcParentWnd.top; CAdvComboBox* pList = static_cast<CAdvComboBox*>(m_pComboParent); if( !pList->PointInWindow( pt ) ) { ReleaseCapture(); m_pComboParent->PostMessage( WM_DESTROY_DROPLIST ); } else { ReleaseCapture(); m_pComboParent->PostMessage( WM_DESTROY_DROPLIST ); } } LPARAM l = MAKELPARAM(point.x, point.y); m_pComboParent->SendMessage(WM_LBUTTONDOWN, nFlags, l); CWnd::OnLButtonDown(nFlags, point); }