Why does the scrolling in windows programs often tend to be klunky?

For example, when I am responding to a post, and I want to select a block of text in the reply window, I click and drag over the text. This is usually a pretty smooth action. But if some of the text is outside of the border of the window, it becomes very difficult to select in this fashion. As the cursor gets to the edge of the border, it either “hangs” and won’t go any further, or it all of a sudden jumps too far. Is this a function of Internet Explorer, or of the vBulletin software, or somehow dependent on what type of internet connection I have? It’s not just on SDMB, of course - I’ve noticed this in many different windows programs.

Ideally, I would want the page to begin scrolling pretty much as soon as the cursor reaches the border, and scroll at a reasonable rate, not suddenly go into warp speed. I know nothing about how software is written - is this something that’s difficult to do? Am I expecting the impossible?

When I was programming Visual C++ 7 years ago, the way it automaticaly generated scroll bars and scrolling for you was pretty awful. You had to do a lot of work to the code to make your windows scroll nicely. I expect things have improved a bit by now, but still the default way things happened if you use such tools a Visual C++ probably still leaves a lot to desire.

First of all, the text box that you use is a component of the Windows operating system. Each programmer does not program this stuff, they just use the elements that windows provides. So the behavior you see should be pretty consistent across windows applications.

The operation you’re attempting is called drag selection. When you drag to the edge of the window, the operating system software has to detect that you intent to drag further. It does this by seeing if you’ve dragged into a particular region beyond the edge of the textbox window. I think there is a timeout assoicated with how long you linger there before the operating system decides that you’re trying to do a drag selection. At that point, it handles the scrolling of the window for you, so the underlying software doesn’t know exactly what you’re doing.

Typically, the way this works is the control detects that you want to drag-scroll when you move the mouse pointer into a certain region, then it sets up a timer to continue scrolling every so often as long as the mouse is still there. It also continues scrolling each time you move the mouse, as long as it’s still in the same region. The exact distance it scrolls each time is a function of how far the pointer is from the edge of the control.

The drag scrolling behavior should be the same for the common text box in all programs, but more complicated controls are usually custom written for each application. Drag scrolling on web pages in Mozilla Firefox behaves differently than in Internet Explorer (or other apps that use the IE HTML control).