Showing tag results for Code

Apr 28, 2006
Post comments count0
Post likes count1

What does CS_SAVEBITS do?

Raymond Chen

If you specify the class style, then the window manager will try to save the bits covered by the window. But the real question is why, because that is your guide to using this power only for good, not for evil. When a window whose class specifies the class style is displayed, the window manager takes a snapshot of the pixels on the screen where ...

Code
Apr 25, 2006
Post comments count0
Post likes count1

No, really, you need to pass all unhandled messages to DefWindowProc

Raymond Chen

Earlier I had discussed that you have to return the special value if you want to deny a device removal query because too many programs thought that they had covered "all" the Windows messages and just returned zero for the others. Since then, there have been lots of other window messages added to the system, many of which contain nontrivial proce...

Code
Apr 18, 2006
Post comments count0
Post likes count1

How to fill in that number grouping member of NUMBERFMT

Raymond Chen

If you look at the structure, the way groups are expressed by the member do not match the value returned by : expresses grouping as a series of semicolon-separated numbers, each expressing the number of digits in each group (least-significant group first). A trailing zero indicates that the last grouping should be repeated indefinitely. For ex...

Code
Apr 17, 2006
Post comments count0
Post likes count1

Locale-sensitive number grouping

Raymond Chen

Most westerners are familiar with the fact that the way numbers are formatted differ between the United States and much of Europe. What people don't realize is that the grouping is not always in threes. In India, the least significant group consists of three digits, but subsequent groups are in pairs. I've also seen reports that the first group...

Code
Mar 29, 2006
Post comments count0
Post likes count1

Inadvertently passing large objects by value

Raymond Chen

One mark of punctuation can make all the difference. One program was encountering a stack overflow exception in a function that didn't appear to be doing anything particularly stack-hungry. The following code illustrates the problem: (In reality, the algorithm for comparing two tests results was much more complicated, but that's irrelevant to...

Code
Mar 27, 2006
Post comments count0
Post likes count1

Why doesn't the window manager just take over behavior that used to be within the application's purview?

Raymond Chen

A commenter named "Al" wondered why the window manager couldn't just take over behavior that used to be within the application's purview, such as painting the non-client area, in order to avoid problems with applications not responding to messages promptly enough. If the window manager were being rewritten, then perhaps it could. But to do it now ...

Code
Mar 20, 2006
Post comments count0
Post likes count1

Basic ground rules for programming – function parameters and how they are used

Raymond Chen

There are some basic ground rules that apply to all system programming, so obvious that most documentation does not bother explaining them because these rules should have been internalized by practitioners of the art to the point where they need not be expressed. In the same way that when plotting driving directions you wouldn't even consider takin...

Code
Mar 16, 2006
Post comments count0
Post likes count1

Why does the version 6 animation control not use a background thread?

Raymond Chen

Many people have noticed that the animation bar control in version 6 of the common controls no longer uses a background thread to draw the animation. Instead, it acts as if the style is always set, even if the caller didn't pass it. Why is that? The first reason is that the background thread didn't actually help any. In order to draw transparent ...

Code
Mar 14, 2006
Post comments count0
Post likes count1

Controlling resource consumption by meting out work items

Raymond Chen

At the PDC, one person came to talk to me for advice on a resource management problem they were having. To simplify, their system generated dozens of work items, each of which required significant resource consumption. For the sake of illustration, let's say that each of the work items was a single-threaded computationally-intensive operation that ...

Code
Mar 13, 2006
Post comments count0
Post likes count1

A thread waiting on a synchronization object could be caught napping

Raymond Chen

If you have a synchronization object, say a semaphore, and two threads waiting on the semaphore, and you then release two semaphore tokens with a single call to , you would expect that each of the waiting threads would be woken, each obtaining one token. And in fact, that's what happens—most of the time. Recall in our discussion of why the ...

Code