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.
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.
|
|