//与等于 CChiHuRight & CChiHuRight::operator &= ( DWORD dwRight ) { bool bNavigate = false; //验证权位 if( !IsValidRight( dwRight ) ) { //验证取反权位 ASSERT( IsValidRight( ~dwRight ) ); if( !IsValidRight( ~dwRight ) ) return *this; //调整权位 DWORD dwHeadRight = (~dwRight)&0xF0000000; DWORD dwTailRight = dwRight&MASK_CHI_HU_RIGHT; dwRight = dwHeadRight|dwTailRight; bNavigate = true; } for( BYTE i = 0; i < CountArray(m_dwRightMask); i++ ) { if( (dwRight&m_dwRightMask[i]) || (i==0&&dwRight<0x10000000) ) { m_dwRight[i] &= (dwRight&MASK_CHI_HU_RIGHT); } else if( !bNavigate ) m_dwRight[i] = 0; } return *this; }
void CRussiaGame::OnRightKeyDown(HWND hWnd, UINT uMsg, UINT nTime, DWORD dwTime) { if (!IsValidRight() || IsRightCrash()) { return; } m_currentBlock.Point0.m_x += 1; m_currentBlock.Point1.m_x += 1; m_currentBlock.Point2.m_x += 1; m_currentBlock.Point3.m_x += 1; InvalidateRect(hWnd, NULL, TRUE); }
//或等于 CChiHuRight & CChiHuRight::operator |= ( DWORD dwRight ) { //验证权位 if( !IsValidRight( dwRight ) ) return *this; for( BYTE i = 0; i < CountArray(m_dwRightMask); i++ ) { if( (dwRight&m_dwRightMask[i]) || (i==0&&dwRight<0x10000000) ) m_dwRight[i] |= (dwRight&MASK_CHI_HU_RIGHT); } return *this; }
//赋值符重载 CChiHuRight & CChiHuRight::operator = ( DWORD dwRight ) { DWORD dwOtherRight = 0; //验证权位 if( !IsValidRight( dwRight ) ) { //验证取反权位 ASSERT( IsValidRight( ~dwRight ) ); if( !IsValidRight( ~dwRight ) ) return *this; dwRight = ~dwRight; dwOtherRight = MASK_CHI_HU_RIGHT; } for( BYTE i = 0; i < CountArray(m_dwRightMask); i++ ) { if( (dwRight&m_dwRightMask[i]) || (i==0&&dwRight<0x10000000) ) m_dwRight[i] = dwRight&MASK_CHI_HU_RIGHT; else m_dwRight[i] = dwOtherRight; } return *this; }