183 if (GetStartSelectionPos() != -1 && 184 GetEndSelectionPos() != -1 && 185 lCurPos != GetLastSelectionPos()) { 186 187 CHARRANGE cr; 188 189 SetLastSelectionPos(lCurPos); 190 191 cr.cpMin = GetStartSelectionPos(); 192 cr.cpMax = GetLastSelectionPos(); 193 194 EditSetSel(cr); 195 } 196 197 if (bScrollLeft == TRUE || bScrollRight == TRUE) { 198 SCROLLINFO si; 199 memset(&si, 0, sizeof(si)); 200 si.cbSize = sizeof(si); 201 si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE; 202 203 VERIFY(::GetScrollInfo(GetHWnd(), SB_HORZ, &si)); 204 if (bScrollLeft == TRUE) { 205 si.nPos = si.nPos - si.nPage / 2; 206 si.nPos = max(si.nMin, si.nPos); 207 } else if (bScrollRight == TRUE) { 208 si.nPos = si.nPos + si.nPage / 2; 209 si.nPos = min(si.nPos, si.nMax); 210 } 211 /* 212 * Okay to use 16-bit position since RichEdit control adjusts 213 * its scrollbars so that their range is always 16-bit. 214 */ 215 DASSERT(abs(si.nPos) < 0x8000); 216 SendMessage(WM_HSCROLL, 217 MAKEWPARAM(SB_THUMBPOSITION, LOWORD(si.nPos))); 218 } 219 delete msg; 220 return mrConsume; 221 } else if (msg->message == WM_KEYDOWN) { 222 UINT virtualKey = (UINT) msg->wParam; 223 | 183 if (GetStartSelectionPos() != -1 && 184 GetEndSelectionPos() != -1 && 185 lCurPos != GetLastSelectionPos()) { 186 187 CHARRANGE cr; 188 189 SetLastSelectionPos(lCurPos); 190 191 cr.cpMin = GetStartSelectionPos(); 192 cr.cpMax = GetLastSelectionPos(); 193 194 EditSetSel(cr); 195 } 196 197 if (bScrollLeft == TRUE || bScrollRight == TRUE) { 198 SCROLLINFO si; 199 memset(&si, 0, sizeof(si)); 200 si.cbSize = sizeof(si); 201 si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE; 202 203 SendMessage(EM_SHOWSCROLLBAR, SB_HORZ, TRUE); 204 VERIFY(::GetScrollInfo(GetHWnd(), SB_HORZ, &si)); 205 SendMessage(EM_SHOWSCROLLBAR, SB_HORZ, FALSE); 206 207 if (bScrollLeft == TRUE) { 208 si.nPos = si.nPos - si.nPage / 2; 209 si.nPos = max(si.nMin, si.nPos); 210 } else if (bScrollRight == TRUE) { 211 si.nPos = si.nPos + si.nPage / 2; 212 si.nPos = min(si.nPos, si.nMax); 213 } 214 /* 215 * Okay to use 16-bit position since RichEdit control adjusts 216 * its scrollbars so that their range is always 16-bit. 217 */ 218 DASSERT(abs(si.nPos) < 0x8000); 219 SendMessage(WM_HSCROLL, 220 MAKEWPARAM(SB_THUMBPOSITION, LOWORD(si.nPos))); 221 } 222 delete msg; 223 return mrConsume; 224 } else if (msg->message == WM_KEYDOWN) { 225 UINT virtualKey = (UINT) msg->wParam; 226 |