Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » There is time when the selection of the grid is not drawn normally. Collapse All
Subject Author Date
tera tera Mar 24, 2009 - 12:05 AM

Hello.


There is time when the selection of the grid is not drawn normally.


 


(1),  I let a grid scroll

(2),  I choose a one cell

(3),  I choose the cell of the last line while pushing shift.

A selection is not drawn normally


The test environment is Prof2.85 (2009-01-14).


http://ifreeta.dee.cc/20090324/SampleMuGrid200903a.lzh




 

Technical Support Mar 24, 2009 - 9:46 AM

Thank you for reporting this issue. To fix it, please update the source code for the following method:

 void CExtGridBaseWnd::OnLButtonDown(UINT nFlags, CPoint point) 
{
            ASSERT_VALID( this );
            if( m_eMTT != __EMTT_NOTHING )
            {
                        SendMessage( WM_CANCELMODE );
                        if( m_eMTT != __EMTT_NOTHING )
                                    return;
            } // if( m_eMTT != __EMTT_NOTHING )
UINT nRepCnt = 1;
static clock_t g_nLastClock = 0;
static HWND g_hWndLastClick = NULL;
static CPoint g_ptLastClick(-32767,-32767);
CPoint ptLastClick = point;
            ClientToScreen( &ptLastClick );
clock_t nCurrClock = ::clock();
            if(                     g_hWndLastClick == m_hWnd
                        &&        g_ptLastClick == ptLastClick
                        )
            {
                        clock_t nDiff = (clock_t)::abs( nCurrClock - g_nLastClock );
                        clock_t nDoubleClickTime = (clock_t)::GetDoubleClickTime();
                        if( nDiff <= nDoubleClickTime )
                                    nRepCnt = 2;
            }
            g_ptLastClick = ptLastClick;
            g_hWndLastClick = m_hWnd;
            g_nLastClock = nCurrClock;

HWND hWndOwn = m_hWnd, hWndFocus = ::GetFocus();
            if( ( hWndFocus != m_hWnd ) && ( m_nMouseActivateCode == MA_ACTIVATE || m_nMouseActivateCode == MA_ACTIVATEANDEAT ) )
            { // check MDI child frame activation explicitly
                        bool bIsMDIChildWindow = false;
                        // find the parent frame of the window that was just clicked
                        HWND hWndActivate = ::GetParent( hWndOwn );
                        for( ; hWndActivate != NULL; hWndActivate = ::GetParent( hWndActivate ) )
                        {
                                    __EXT_MFC_LONG_PTR dwWndStyle = ::__EXT_MFC_GetWindowLong( hWndActivate, GWL_STYLE );
                                    if( ( dwWndStyle & WS_CHILD ) == 0 )
                                                break;
                                    __EXT_MFC_LONG_PTR dwWndStyleEx = ::__EXT_MFC_GetWindowLong( hWndActivate, GWL_EXSTYLE );
                                    if( ( dwWndStyleEx & WS_EX_MDICHILD ) == 0 )
                                                continue;
                                    bIsMDIChildWindow = true;
                                    break;
                        } // for( ; hWndActivate != NULL; hWndActivate = ::GetParent( hWndActivate ) )
                        if( bIsMDIChildWindow )
                        {
                                    // find the parent frame of the window that has focus
                                    bIsMDIChildWindow = false;
                                    HWND hWndActivate2 = hWndFocus;
                                    for( ; hWndActivate2 != NULL; hWndActivate2 = ::GetParent( hWndActivate2 ) )
                                    {
                                                __EXT_MFC_LONG_PTR dwWndStyle = ::__EXT_MFC_GetWindowLong( hWndActivate2, GWL_STYLE );
                                                if( ( dwWndStyle & WS_CHILD ) == 0 )
                                                            break;
                                                __EXT_MFC_LONG_PTR dwWndStyleEx = ::__EXT_MFC_GetWindowLong( hWndActivate2, GWL_EXSTYLE );
                                                if( ( dwWndStyleEx & WS_EX_MDICHILD ) == 0 )
                                                            continue;
                                                bIsMDIChildWindow = true;
                                                break;
                                    } // for( ; hWndActivate2 != NULL; hWndActivate2 = ::GetParent( hWndActivate2 ) )
                                    if( hWndActivate != hWndActivate2 )
                                    { // if windows are in different frames, set the focus to the new frame
                                                ActivateTopParent();
                                                CFrameWnd * pFrame = GetParentFrame();
                                                if( pFrame != NULL )
                                                {
                                                            CMDIChildWnd * pMDIChildWnd = DYNAMIC_DOWNCAST( CMDIChildWnd, pFrame );
                                                            if( pMDIChildWnd != NULL )
                                                            {
                                                                        pMDIChildWnd->MDIActivate();
                                                                        pMDIChildWnd->SetFocus();
                                                            } // if( pMDIChildWnd != NULL )
                                                } // if( pFrame != NULL )
                                    } // if windows are in different frames, set the focus to the new frame
                        }
                        if( ::GetFocus() != m_hWnd )
                                    SetFocus();
            } // check MDI child frame activation explicitly
            if( OnGbwAnalyzeCellMouseClickEvent(VK_LBUTTON,nRepCnt,nFlags,point) )
                        return;
LONG nColumnCount = ColumnCountGet();
LONG nRowCount = RowCountGet();
CExtGridHitTestInfo htInfo( point );
            HitTest( htInfo, true, true );
DWORD dwSiwStyles = SiwGetStyle();
            if( (dwSiwStyles & __EGBS_RESIZING_CELLS_MASK) != 0 )
            {
                        if(                     htInfo.m_nColNo >= 0 && htInfo.m_nRowNo >= 0
                                    &&        (htInfo.m_dwAreaFlags & __EGBWA_NEAR_CELL_BORDER_SIDE_MASK) != 0
                                    )
                        {
                                    INT nColType = htInfo.GetInnerOuterTypeOfColumn();
                                    INT nRowType = htInfo.GetInnerOuterTypeOfRow();
                                    if( nColType == 0 || nRowType == 0 )
                                    {
                                                CSize _sizeJoin = OnGbwCellJoinQueryInfo( htInfo.m_nColNo, htInfo.m_nRowNo, nColType, nRowType );
                                                if( nColType == 0 && _sizeJoin.cx > 1 )
                                                {
                                                            htInfo.m_nColNo += _sizeJoin.cx - 1;
                                                            htInfo.m_rcPart.SetRectEmpty();
                                                            INT nExtraSpaceBefore = 0, nExtraSpaceAfter = 0;
                                                            INT nItemExtent = OnSiwQueryItemExtentH( htInfo.m_nColNo, &nExtraSpaceBefore, &nExtraSpaceAfter );
                                                            htInfo.m_rcExtra.left = htInfo.m_rcExtra.right - nItemExtent;
                                                            htInfo.m_rcItem.left = htInfo.m_rcExtra.left + nExtraSpaceBefore;
                                                            htInfo.m_rcItem.right = htInfo.m_rcExtra.right + nExtraSpaceAfter;
                                                } // if( nColType == 0 && _sizeJoin.cx > 1 )
                                                if( nRowType == 0 && _sizeJoin.cy > 1 )
                                                {
                                                            htInfo.m_nRowNo += _sizeJoin.cy - 1;
                                                            htInfo.m_rcPart.SetRectEmpty();
                                                            INT nExtraSpaceBefore = 0, nExtraSpaceAfter = 0;
                                                            INT nItemExtent = OnSiwQueryItemExtentV( htInfo.m_nRowNo, &nExtraSpaceBefore, &nExtraSpaceAfter );
                                                            htInfo.m_rcExtra.top = htInfo.m_rcExtra.bottom - nItemExtent;
                                                            htInfo.m_rcItem.top = htInfo.m_rcExtra.top + nExtraSpaceBefore;
                                                            htInfo.m_rcItem.bottom = htInfo.m_rcExtra.bottom + nExtraSpaceAfter;
                                                } // if( nRowType == 0 && _sizeJoin.cy > 1 )
                                    } // if( nRowType == 0 || nRowType == 0 )
                                    m_nTrackExtentMin
                                                = m_nTrackExtentMax
                                                = m_nTrackExtentCurrent
                                                = 0;
                                    if( (htInfo.m_dwAreaFlags & __EGBWA_INNER_CELLS) != 0 )
                                    {
                                                if(                     (htInfo.m_dwAreaFlags & __EGBWA_NEAR_CELL_BORDER_V) != 0
                                                            &&        (dwSiwStyles & __EGBS_RESIZING_CELLS_INNER_V) != 0
                                                            &&        htInfo.m_nRowNo >= 0
                                                            &&        OnGbwCanResizeRow( htInfo.m_nRowNo, &m_nTrackExtentMin, &m_nTrackExtentMax )
                                                            )
                                                {
                                                            //m_nTrackExtentCurrent = htInfo.m_rcItem.Height();
                                                            m_nTrackExtentCurrent = OnSiwQueryItemExtentV( htInfo.m_nRowNo );
                                                            OnGbwResizingAdjustComputedTrackExtent( m_nTrackExtentCurrent, m_nTrackExtentMin, m_nTrackExtentMax, htInfo, false );
                                                            ASSERT(
                                                                                    m_nTrackExtentMin >= 0
                                                                        &&        m_nTrackExtentMax >= 0
                                                                        &&        m_nTrackExtentMin <= m_nTrackExtentMax
                                                                        &&        m_nTrackExtentCurrent >= 0
                                                                        &&        m_nTrackExtentMin <= m_nTrackExtentCurrent
                                                                        &&        m_nTrackExtentCurrent <= m_nTrackExtentMax
                                                                        );
                                                            // start row resizing
                                                            _DoSetCursor();
                                                            m_htInfoResizing = htInfo;
//                                                          m_htInfoResizing.m_ptClient.y = htInfo.m_rcItem.top - 1;
//                                                          HitTest( m_htInfoResizing, true, true );
                                                            m_eMTT = __EMTT_RESIZING_V;
                                                            m_ptLastME = point;
                                                            OnGbwResizingAdjustHtInfo( m_htInfoResizing );
                                                            CExtMouseCaptureSink::SetCapture( m_hWnd );
                                                            OnGbwResizingStateUpdate( true, false, &point );
                                                            return;
                                                }
                                                if(                     (htInfo.m_dwAreaFlags & __EGBWA_NEAR_CELL_BORDER_H) != 0
                                                            &&        (dwSiwStyles & __EGBS_RESIZING_CELLS_INNER_H) != 0
                                                            &&        htInfo.m_nColNo >= 0
                                                            &&        OnGbwCanResizeColumn( htInfo.m_nColNo, &m_nTrackExtentMin, &m_nTrackExtentMax )
                                                            )
                                                {
                                                            //m_nTrackExtentCurrent = htInfo.m_rcItem.Width();
                                                            m_nTrackExtentCurrent = OnSiwQueryItemExtentH( htInfo.m_nColNo );
                                                            OnGbwResizingAdjustComputedTrackExtent( m_nTrackExtentCurrent, m_nTrackExtentMin, m_nTrackExtentMax, htInfo, true );
                                                            ASSERT(
                                                                                    m_nTrackExtentMin >= 0
                                                                        &&        m_nTrackExtentMax >= 0
                                                                        &&        m_nTrackExtentMin <= m_nTrackExtentMax
                                                                        &&        m_nTrackExtentCurrent >= 0
                                                                        &&        m_nTrackExtentMin <= m_nTrackExtentCurrent
                                                                        &&        m_nTrackExtentCurrent <= m_nTrackExtentMax
                                                                        );
                                                            // start column resizing
                                                            _DoSetCursor();
                                                            m_htInfoResizing = htInfo;
//                                                          m_htInfoResizing.m_ptClient.x = htInfo.m_rcItem.left - 1;
//                                                          HitTest( m_htInfoResizing, true, true );
                                                            m_eMTT = __EMTT_RESIZING_H;
                                                            m_ptLastME = point;
                                                            OnGbwResizingAdjustHtInfo( m_htInfoResizing );
                                                            CExtMouseCaptureSink::SetCapture( m_hWnd );
                                                            OnGbwResizingStateUpdate( true, false, &point );
                                                            return;
                                                }
                                    } // if( (htInfo.m_dwAreaFlags & __EGBWA_INNER_CELLS) != 0 )
                                    else if(
                                                            (htInfo.m_dwAreaFlags & __EGBWA_OUTER_CELLS) != 0
                                                &&        (           htInfo.GetInnerOuterTypeOfColumn() == 0
                                                            ||           htInfo.GetInnerOuterTypeOfRow() == 0
                                                            )
                                                )
                                    {
                                                if(                     (htInfo.m_dwAreaFlags & __EGBWA_NEAR_CELL_BORDER_V) != 0
                                                            &&        (htInfo.m_dwAreaFlags & __EGBWA_OUTER_H ) != 0
                                                            &&        (dwSiwStyles & __EGBS_RESIZING_CELLS_OUTER_V) != 0
                                                            &&        htInfo.m_nRowNo >= 0
                                                            &&        OnGbwCanResizeRow( htInfo.m_nRowNo, &m_nTrackExtentMin, &m_nTrackExtentMax )
                                                            )
                                                {
                                                            //m_nTrackExtentCurrent = htInfo.m_rcItem.Height();
                                                            m_nTrackExtentCurrent = OnSiwQueryItemExtentV( htInfo.m_nRowNo );
                                                            OnGbwResizingAdjustComputedTrackExtent( m_nTrackExtentCurrent, m_nTrackExtentMin, m_nTrackExtentMax, htInfo, false );
                                                            ASSERT(
                                                                                    m_nTrackExtentMin >= 0
                                                                        &&        m_nTrackExtentMax >= 0
                                                                        &&        m_nTrackExtentMin <= m_nTrackExtentMax
                                                                        &&        m_nTrackExtentCurrent >= 0
                                                                        &&        m_nTrackExtentMin <= m_nTrackExtentCurrent
                                                                        &&        m_nTrackExtentCurrent <= m_nTrackExtentMax
                                                                        );
                                                            // start row resizing
                                                            _DoSetCursor();
                                                            m_htInfoResizing = htInfo;
//                                                          m_htInfoResizing.m_ptClient.y = htInfo.m_rcItem.top - 1;
//                                                          HitTest( m_htInfoResizing, true, true );
                                                            m_eMTT = __EMTT_RESIZING_V;
                                                            m_ptLastME = point;
                                                            OnGbwResizingAdjustHtInfo( m_htInfoResizing );
                                                            CExtMouseCaptureSink::SetCapture( m_hWnd );
                                                            OnGbwResizingStateUpdate( true, false, &point );
                                                            return;
                                                }
                                                if(                     (htInfo.m_dwAreaFlags & __EGBWA_NEAR_CELL_BORDER_H) != 0
                                                            &&        (htInfo.m_dwAreaFlags & __EGBWA_OUTER_V ) != 0
                                                            &&        (dwSiwStyles & __EGBS_RESIZING_CELLS_OUTER_H) != 0
                                                            &&        htInfo.m_nColNo >= 0
                                                            &&        OnGbwCanResizeColumn( htInfo.m_nColNo, &m_nTrackExtentMin, &m_nTrackExtentMax )
                                                            )
                                                {
                                                            //m_nTrackExtentCurrent = htInfo.m_rcItem.Width();
                                                            m_nTrackExtentCurrent = OnSiwQueryItemExtentH( htInfo.m_nColNo );
                                                            OnGbwResizingAdjustComputedTrackExtent( m_nTrackExtentCurrent, m_nTrackExtentMin, m_nTrackExtentMax, htInfo, true );
                                                            ASSERT(
                                                                                    m_nTrackExtentMin >= 0
                                                                        &&        m_nTrackExtentMax >= 0
                                                                        &&        m_nTrackExtentMin <= m_nTrackExtentMax
                                                                        &&        m_nTrackExtentCurrent >= 0
                                                                        &&        m_nTrackExtentMin <= m_nTrackExtentCurrent
                                                                        &&        m_nTrackExtentCurrent <= m_nTrackExtentMax
                                                                        );
                                                            // start column resizing
                                                            _DoSetCursor();
                                                            m_htInfoResizing = htInfo;
//                                                          m_htInfoResizing.m_ptClient.x = htInfo.m_rcItem.left - 1;
//                                                          HitTest( m_htInfoResizing, true, true );
                                                            m_eMTT = __EMTT_RESIZING_H;
                                                            m_ptLastME = point;
                                                            OnGbwResizingAdjustHtInfo( m_htInfoResizing );
                                                            CExtMouseCaptureSink::SetCapture( m_hWnd );
                                                            OnGbwResizingStateUpdate( true, false, &point );
                                                            return;
                                                }
                                    } // else if( (htInfo.m_dwAreaFlags & __EGBWA_OUTER_CELLS) != 0 ...
                        } // if( htInfo.m_nColNo >= 0 && htInfo.m_nRowNo >= 0 ...
            } // if( (dwSiwStyles & __EGBS_RESIZING_CELLS_MASK) != 0 )
            HitTest( htInfo, false, true );
            if( OnGbwDataDndCanStart( htInfo ) )
            {
                        m_eMTT = __EMTT_DATA_DND_STARTING;
                        CExtMouseCaptureSink::SetCapture( m_hWnd );
                        return;
            } // if( OnGbwDataDndCanStart( htInfo ) )
            if(                     (dwSiwStyles & __EGBS_SFB_MASK) != __EGBS_SFB_NONE
                        &&        ( htInfo.m_nColNo >= 0 || htInfo.m_nRowNo >= 0 )
                        )
            { // if any selection mode can be tracked
                        INT nAreaCount = SelectionGetAreaCount();
                        bool bAlt = ( (::GetAsyncKeyState(VK_MENU)&0x8000) != 0 ) ? true : false;
                        bool bCtrl = ( (::GetAsyncKeyState(VK_CONTROL)&0x8000) != 0 ) ? true : false;
                        bool bShift = ( (::GetAsyncKeyState(VK_SHIFT)&0x8000) != 0 ) ? true : false;
                        bool bCtrlOnly = bCtrl && (!bAlt) && (!bShift);
                        bool bShiftOnly = (!bCtrl) && (!bAlt) && bShift;
                        bool bNoModifiers = (!bCtrl) && (!bAlt) && (!bShift);
                        bool bMultiAreaSelection = MultiAreaSelectionGet();
                        bool bReplaceOldSelection =
                                                (!bMultiAreaSelection)
                                    ||           (!(bCtrlOnly || bShiftOnly));
                        if( bNoModifiers )
                        {
                                    if( OnGbwAnalyzeCellMouseClickEvent(VK_LBUTTON,3,nFlags,point) )
                                                return;
                        }
                        if( (htInfo.m_dwAreaFlags & __EGBWA_OUTER_CELLS) != 0 )
                        {
                                    if(                     ( htInfo.m_dwAreaFlags & __EGBWA_OUTER_H ) != 0
                                                &&        ( htInfo.m_dwAreaFlags & __EGBWA_OUTER_V ) == 0
                                                &&        ( dwSiwStyles & __EGBS_SF_SELECT_OUTER_ROWS ) != 0
                                                &&        htInfo.m_nRowNo >= 0
                                                &&        nColumnCount > 0
                                                &&        (                       ( dwSiwStyles & __EGBS_SFB_MASK ) == __EGBS_SFB_FULL_ROWS
                                                            ||           (           ( dwSiwStyles & __EGBS_SFB_MASK ) == __EGBS_SFB_CELLS
                                                                        &&        ( dwSiwStyles & __EGBS_SFM_ROWS ) != 0
                                                                        )
                                                            )
                                                )
                                    {
                                                INT nSelectionExtent = 0;
                                                INT nColType = htInfo.GetInnerOuterTypeOfColumn();
                                                INT nRowType = htInfo.GetInnerOuterTypeOfRow();
                                                CSize _sizeJoin = OnGbwCellJoinQueryInfo( htInfo.m_nColNo, htInfo.m_nRowNo, nColType, nRowType );
                                                if( _sizeJoin.cy >= 0 )
                                                            nSelectionExtent = _sizeJoin.cy - 1;
                                                CRect rcSelection( nColumnCount - 1, htInfo.m_nRowNo, 0, htInfo.m_nRowNo + nSelectionExtent );
                                                if( (htInfo.m_dwAreaFlags & __EGBWA_OUTER_RIGHT ) != 0 )
                                                {
                                                            LONG n = rcSelection.right;
                                                            rcSelection.right = rcSelection.left;
                                                            rcSelection.left = n;
                                                } // if( (htInfo.m_dwAreaFlags & __EGBWA_OUTER_RIGHT ) != 0 )
                                                if(                     (dwSiwStyles & __EGBS_SFM_ROWS) != 0
                                                            &&        bShiftOnly
                                                            &&        nAreaCount > 0
                                                            )
                                                {
                                                            CRect rcSelection = SelectionGet( false, nAreaCount - 1 );
                                                            if( rcSelection.bottom != htInfo.m_nRowNo )
                                                            {
                                                                        rcSelection.bottom = htInfo.m_nRowNo;
                                                                        FocusSet( CPoint(FocusGet().x, htInfo.m_nRowNo), false, false, false, false );
                                                                        VERIFY( SelectionSetAt( nAreaCount - 1, rcSelection, false ) );
                                                                        if( nSelectionExtent > 0 )
                                                                                    EnsureVisibleColumn( htInfo.m_nRowNo + nSelectionExtent, true );
                                                                        EnsureVisibleRow( htInfo.m_nRowNo, true );
                                                            }
                                                            return;
                                                }
                                                if( ! AutoFocusBottomRightGet() )
                                                            FocusSet( CPoint(FocusGet().x, htInfo.m_nRowNo), false, false, false, false );
                                                SelectionSet( rcSelection, bReplaceOldSelection, false, false );
                                                EnsureVisibleRow( htInfo.m_nRowNo, false );
                                                OnSwInvalidate( true );
                                                if( ! LbExtSelectionGet() )
                                                            return;
                                                if( (dwSiwStyles & __EGBS_SFM_ROWS) != 0 )
                                                {
                                                            m_eMTT = __EMTT_SEL_OUTER_ROWS;
                                                            m_ptLastME = point;
                                                            CExtMouseCaptureSink::SetCapture( m_hWnd );
                                                            _DoSetCursor();
                                                }
                                                return;
                                    }
                                    if(                     ( htInfo.m_dwAreaFlags & __EGBWA_OUTER_H ) == 0
                                                &&        ( htInfo.m_dwAreaFlags & __EGBWA_OUTER_V ) != 0
                                                &&        ( dwSiwStyles & __EGBS_SF_SELECT_OUTER_COLUMNS ) != 0
                                                &&        htInfo.m_nColNo >= 0
                                                &&        nRowCount > 0
                                                &&        (                       ( dwSiwStyles & __EGBS_SFB_MASK ) == __EGBS_SFB_FULL_COLUMNS
                                                            ||           (           ( dwSiwStyles & __EGBS_SFB_MASK ) == __EGBS_SFB_CELLS
                                                                        &&        ( dwSiwStyles & __EGBS_SFM_COLUMNS ) != 0
                                                                        )
                                                            )
                                                )
                                    {
                                                INT nSelectionExtent = 0;
                                                INT nColType = htInfo.GetInnerOuterTypeOfColumn();
                                                INT nRowType = htInfo.GetInnerOuterTypeOfRow();
                                                CSize _sizeJoin = OnGbwCellJoinQueryInfo( htInfo.m_nColNo, htInfo.m_nRowNo, nColType, nRowType );
                                                if( _sizeJoin.cx >= 0 )
                                                            nSelectionExtent = _sizeJoin.cx - 1;
                                                CRect rcSelection( htInfo.m_nColNo, nRowCount - 1, htInfo.m_nColNo + nSelectionExtent, 0 );
                                                if( (htInfo.m_dwAreaFlags & __EGBWA_OUTER_BOTTOM ) != 0 )
                                                {
                                                            LONG n = rcSelection.bottom;
                                                            rcSelection.bottom = rcSelection.top;
                                                            rcSelection.top = n;
                                                } // if( (htInfo.m_dwAreaFlags & __EGBWA_OUTER_BOTTOM ) != 0 )
                                                if(                     (dwSiwStyles & __EGBS_SFM_COLUMNS) != 0
                                                            &&        bShiftOnly
                                                            &&        nAreaCount > 0
                                                            )
                                                {
                                                            CRect rcSelection = SelectionGet( false, nAreaCount - 1 );
                                                            if( rcSelection.right != htInfo.m_nColNo )
                                                            {
                                                                        rcSelection.right = htInfo.m_nColNo;
                                                                        FocusSet( CPoint(htInfo.m_nColNo, FocusGet().y), false, false, false, false );
                                                                        VERIFY( SelectionSetAt( nAreaCount - 1, rcSelection, false ) );
                                                                        if( nSelectionExtent > 0 )
                                                                                    EnsureVisibleColumn( htInfo.m_nColNo + nSelectionExtent, true );
                                                                        EnsureVisibleColumn( htInfo.m_nColNo, true );
                                                            }
                                                            return;
                                                }
                                                if( ! AutoFocusBottomRightGet() )
                                                            FocusSet( CPoint(htInfo.m_nColNo, FocusGet().y), false, false, false, false );
                                                SelectionSet( rcSelection, bReplaceOldSelection, false, false );
                                                EnsureVisibleColumn( htInfo.m_nColNo, false );
                                                OnSwInvalidate( true );
                                                if( ! LbExtSelectionGet() )
                                                            return;
                                                if( (dwSiwStyles & __EGBS_SFM_COLUMNS) != 0 )
                                                {
                                                            m_eMTT = __EMTT_SEL_OUTER_COLUMNS;
                                                            m_ptLastME = point;
                                                            CExtMouseCaptureSink::SetCapture( m_hWnd );
                                                            _DoSetCursor();
                                                }
                                                return;
                                    }
                        } // if( (htInfo.m_dwAreaFlags & __EGBWA_OUTER_CELLS) != 0 ...
                        if( (htInfo.m_dwAreaFlags & __EGBWA_INNER_CELLS) != 0 )
                        {
                                    DWORD dwScrollTypeH = SiwScrollTypeHGet();
                                    DWORD dwScrollTypeV = SiwScrollTypeVGet();
                                    if( (dwSiwStyles & __EGBS_SFB_MASK) == __EGBS_SFB_FULL_COLUMNS )
                                    {
                                                if( htInfo.m_nColNo >= 0 )
                                                {
                                                            if(                     (dwSiwStyles & __EGBS_SFM_COLUMNS) != 0
                                                                        &&        OnGbwDataDndIsAllowed()
                                                                        &&        (           bNoModifiers
                                                                                    ||           (           bCtrlOnly
                                                                                                &&        SelectionGetForCell( htInfo.m_nColNo, 0 )
                                                                                                &&        (!bReplaceOldSelection)
                                                                                                )
                                                                                    )
                                                                        )
                                                                        return; // process in WM_LBUTTONUP
                                                            if(                     (dwSiwStyles & __EGBS_SFM_COLUMNS) != 0
                                                                        &&        bShiftOnly
                                                                        &&        nAreaCount > 0
                                                                        )
                                                            {
                                                                        CRect rcSelection = SelectionGet( false, nAreaCount - 1 );
                                                                        if( rcSelection.right != htInfo.m_nColNo )
                                                                        {
                                                                                    rcSelection.right = htInfo.m_nColNo;
                                                                                    FocusSet( CPoint(htInfo.m_nColNo, htInfo.m_nRowNo), false, false, false, false );
                                                                                    VERIFY( SelectionSetAt( nAreaCount - 1, rcSelection, false ) );
                                                                                    EnsureVisibleColumn( htInfo.m_nColNo, false );
                                                                                    OnSwInvalidate( true );
                                                                        }
                                                                        return;
                                                            }
                                                            if( ! AutoFocusBottomRightGet() )
                                                                        FocusSet( CPoint(htInfo.m_nColNo, htInfo.m_nRowNo), false, false, false, false );
                                                            CRect rcSelection( htInfo.m_nColNo, 0, htInfo.m_nColNo, nRowCount-1 );
                                                            SelectionSet( rcSelection, bReplaceOldSelection, false, false );
                                                            EnsureVisibleColumn( htInfo.m_nColNo, false );
                                                            OnSwInvalidate( true );
                                                            if( ! LbExtSelectionGet() )
                                                                        return;
                                                            if( (dwSiwStyles & __EGBS_SFM_COLUMNS) != 0 )
                                                            {
                                                                        m_eMTT = __EMTT_SEL_INNER_COLUMNS;
                                                            m_ptLastME = point;
                                                                        CExtMouseCaptureSink::SetCapture( m_hWnd );
                                                                        _DoSetCursor();
                                                            }
                                                } // if( htInfo.m_nColNo >= 0 )
                                                return;
                                    } // if( (dwSiwStyles & __EGBS_SFB_MASK) == __EGBS_SFB_FULL_COLUMNS )
                                    else if( (dwSiwStyles & __EGBS_SFB_MASK) == __EGBS_SFB_FULL_ROWS )
                                    {
                                                if( htInfo.m_nRowNo >= 0 )
                                                {
                                                            if(                     (dwSiwStyles & __EGBS_SFM_ROWS) != 0
                                                                        &&        OnGbwDataDndIsAllowed()
                                                                        &&        (           bNoModifiers
                                                                                    ||           (           bCtrlOnly
                                                                                                &&        SelectionGetForCell( 0, htInfo.m_nRowNo )
                                                                                                &&        (!bReplaceOldSelection)
                                                                                                )
                                                                                    )
                                                                        )
                                                                        return; // process in WM_LBUTTONUP
                                                            if(                     (dwSiwStyles & __EGBS_SFM_ROWS) != 0
                                                                        &&        bShiftOnly
                                                                        &&        nAreaCount > 0
                                                                        )
                                                            {
                                                                        CRect rcSelection = SelectionGet( false, nAreaCount - 1 );
                                                                        if( rcSelection.bottom != htInfo.m_nRowNo )
                                                                        {
                                                                                    rcSelection.bottom = htInfo.m_nRowNo;
                                                                                    FocusSet( CPoint(htInfo.m_nColNo, htInfo.m_nRowNo), false, false, false, false );
                                                                                    VERIFY( SelectionSetAt( nAreaCount - 1, rcSelection, false ) );
                                                                                    EnsureVisibleRow( htInfo.m_nRowNo, false );
                                                                                    OnSwInvalidate( true );
                                                                        }
                                                                        return;
                                                            }
                                                            if( ! AutoFocusBottomRightGet() )
                                                                        FocusSet( CPoint(htInfo.m_nColNo, htInfo.m_nRowNo), false, false, false, false );
                                                            CRect rcSelection( 0, htInfo.m_nRowNo, nColumnCount-1, htInfo.m_nRowNo );
                                                            SelectionSet( rcSelection, bReplaceOldSelection, false, false );
                                                            EnsureVisibleRow( htInfo.m_nRowNo, false );
                                                            OnSwInvalidate( true );
                                                            if( ! LbExtSelectionGet() )
                                                                        return;
                                                            if( (dwSiwStyles & __EGBS_SFM_ROWS) != 0 )
                                                            {
                                                                        m_eMTT = __EMTT_SEL_INNER_ROWS;
                                                            m_ptLastME = point;
                                                                        CExtMouseCaptureSink::SetCapture( m_hWnd );
                                                                        _DoSetCursor();
                                                            }
                                                } // if( htInfo.m_nRowNo >= 0 )
                                                return;
                                    } // else if( (dwSiwStyles & __EGBS_SFB_MASK) == __EGBS_SFB_FULL_ROWS )
                                    else
                                    {
                                                ASSERT( (dwSiwStyles & __EGBS_SFB_MASK) == __EGBS_SFB_CELLS );
                                                if(                     0 <= htInfo.m_nColNo && (htInfo.m_nColNo < nColumnCount || dwScrollTypeH == __ESIW_ST_VIRTUAL )
                                                            &&        0 <= htInfo.m_nRowNo && (htInfo.m_nRowNo < nRowCount || dwScrollTypeV == __ESIW_ST_VIRTUAL )
                                                            )
                                                { // if column and row numbers specified
                                                            ASSERT( m_eMTT == __EMTT_NOTHING );
                                                            CPoint ptNewFocus( htInfo.m_nColNo, htInfo.m_nRowNo );
                                                            if( bReplaceOldSelection )
                                                                        FocusSet( ptNewFocus, true, true, true, true );
                                                            else
                                                            {
                                                                        if(                     (dwSiwStyles & (__EGBS_SFM_ROWS|__EGBS_SFM_COLUMNS)) != 0
                                                                                    &&        OnGbwDataDndIsAllowed()
                                                                                    &&        (           bNoModifiers
                                                                                                ||           (           bCtrlOnly
                                                                                                            &&        SelectionGetForCell( htInfo.m_nColNo, htInfo.m_nRowNo )
                                                                                                            &&        (!bReplaceOldSelection)
                                                                                                            )
                                                                                                )
                                                                                    )
                                                                                    return; // process in WM_LBUTTONUP
                                                                        if(                     (dwSiwStyles & (__EGBS_SFM_ROWS|__EGBS_SFM_COLUMNS)) != 0
                                                                                    &&        bShiftOnly
                                                                                    &&        nAreaCount > 0
                                                                                    )
                                                                        {
                                                                                    CRect rcSelection = SelectionGet( false, nAreaCount - 1 );
                                                                                    if(                     (           rcSelection.bottom != htInfo.m_nRowNo
                                                                                                            &&        (dwSiwStyles & __EGBS_SFM_ROWS) != 0
                                                                                                            )
                                                                                                ||           (           rcSelection.right != htInfo.m_nColNo
                                                                                                            &&        (dwSiwStyles & __EGBS_SFM_COLUMNS) != 0
                                                                                                            )
                                                                                                )
                                                                                    {
                                                                                                CPoint ptFocus = FocusGet();
                                                                                                if( (dwSiwStyles & __EGBS_SFM_ROWS) != 0 )
                                                                                                {
                                                                                                            rcSelection.bottom = htInfo.m_nRowNo;
                                                                                                            ptFocus.y = htInfo.m_nRowNo;
                                                                                                }
                                                                                                if( (dwSiwStyles & __EGBS_SFM_COLUMNS) != 0 )
                                                                                                {
                                                                                                            rcSelection.right = htInfo.m_nColNo;
                                                                                                            ptFocus.x = htInfo.m_nColNo;
                                                                                                }
                                                                                                FocusSet( ptFocus, false, false, false, false );
                                                                                                VERIFY( SelectionSetAt( nAreaCount - 1, rcSelection, true ) );
                                                                                    }
                                                                                    return;
                                                                        }
                                                                        if( ! AutoFocusBottomRightGet() )
                                                                                    FocusSet( ptNewFocus, true, true, false, false );
                                                                        SelectionSet( ptNewFocus, false, false, true );
                                                            } // else from if( bReplaceOldSelection )
                                                            if( ! LbExtSelectionGet() )
                                                                        return;
                                                            switch( (dwSiwStyles & (__EGBS_SFM_COLUMNS|__EGBS_SFM_ROWS) ) )
                                                            {
                                                            case 0L:
                                                                        return;
                                                            case __EGBS_SFM_COLUMNS:
                                                                        m_eMTT = __EMTT_SEL_VAR_COLUMNS;
                                                                        m_ptLastME = point;
                                                                        break;
                                                            case __EGBS_SFM_ROWS:
                                                                        m_eMTT = __EMTT_SEL_VAR_ROWS;
                                                                        m_ptLastME = point;
                                                                        break;
                                                            case __EGBS_SFM_COLUMNS|__EGBS_SFM_ROWS:
                                                                        m_eMTT = __EMTT_SEL_VAR_RANGE;
                                                                        m_ptLastME = point;
                                                                        break;
#ifdef _DEBUG
                                                            default:
                                                                        ASSERT( FALSE );
                                                                        break;
#endif // _DEBUG
                                                            } // switch( (dwSiwStyles & (__EGBS_SFM_COLUMNS|__EGBS_SFM_ROWS) ) )
                                                            ASSERT( m_eMTT != __EMTT_NOTHING );
                                                            CExtMouseCaptureSink::SetCapture( m_hWnd );
                                                            _DoSetCursor();
                                                            return;
                                                } // if column and row numbers specified
                                    } // else from else if( (dwSiwStyles & __EGBS_SFB_MASK) == __EGBS_SFB_FULL_ROWS )
                                    return;
                        } // if( (htInfo.m_dwAreaFlags & __EGBWA_INNER_CELLS) != 0 )
            } // if any selection mode can be tracked
            CExtScrollItemWnd::OnLButtonDown(nFlags, point);
}


tera tera Mar 24, 2009 - 7:52 PM

  Hello.


>To fix it, please update the source code for the following method:


I want to download a revision from ftp[prof-uis-com].

Please tell the schedule.


 

Technical Support Mar 25, 2009 - 6:28 AM

No problem. Please drop us an e-mail so we will reply with how to download it.