Showing tag results for Code

Jan 2, 2007
Post comments count0
Post likes count1

Why can't I GetProcAddress for CreateWindow?

Raymond Chen

Occasionally, I'll see people having trouble trying to for functions like or . Usually, it's coming from people who are trying to write p/invoke signatures, for p/invoke does a under the covers. Why can't you for these functions? Because they're not really functions. They're function-like macros: In fact, as you can see above is doubly a...

Code
Dec 26, 2006
Post comments count0
Post likes count1

The first parameter to VerQueryValue really must be a buffer you obtained from GetFileVersionInfo

Raymond Chen

The documentation for the function states that the first parameter is a "pointer to the buffer containing the version-information resource returned by the function." Some people, however, decide to bypass this step and pass a pointer to data that was obtained some other way, and then wonder why doesn't work. The documentation says that the fir...

Code
Dec 18, 2006
Post comments count0
Post likes count1

Some call it context, others call it reference data, but whatever it is, it's yours

Raymond Chen

Different functions call it different things. calls it . calls it reference data. calls it . just calls it a parameter! But whatever its name is, it means the same thing: It's a value the function doesn't care about. All the function does is hand that value back to you. What the value means is up to you. What if you need to pass more context ...

Code
Dec 18, 2006
Post comments count0
Post likes count1

Do not write in-process shell extensions in managed code

Raymond Chen

Jesse Kaplan, one of the CLR program managers, explains why you shouldn't write in-process shell extensions in managed code. The short version is that doing so introduces a CLR version dependency which may conflict with the CLR version expected by the host process. Remember that shell extensions are injected into all processes that use the shell ...

Code
Dec 14, 2006
Post comments count0
Post likes count1

Computing listview infotips in the background

Raymond Chen

When the listview control asks you for an infotip, it sends you then notification, and when you return, the result is displayed as the infotip. But what if computing the infotip takes a long time? You don't want to stall the UI thread on a long operation, after all. This is where comes in. If you want to say, "Um, I'm not ready with that infot...

Code
Dec 13, 2006
Post comments count0
Post likes count0

Displaying infotips for folded and unfolded listview items

Raymond Chen

When displaying infotips for listview items, you have to deal with both the folded and unfolded case. "Folded" is the term used to describe a listview item in large icon mode whose text has been truncated due to length. When the user selects the item, the full text is revealed, a process known as "unfolding". Take our scratch program and make t...

Code
Dec 8, 2006
Post comments count0
Post likes count1

Do not overload the E_NOINTERFACE error

Raymond Chen

One of the more subtle ways people mess up is returning when the problem wasn't actually an unsupported interface. The return value has very specific meaning. Do not use it as your generic "gosh, something went wrong" error. (Use an appropriate error such as or .) Recall that the rules for are that (in the absence of catastrophic errors such...

Code
Dec 4, 2006
Post comments count0
Post likes count1

The name WinMain is just a convention

Raymond Chen

Although the function is documented in the Platform SDK, it's not really part of the platform. Rather, is the conventional name for the user-provided entry point to a Windows program. The real entry point is in the C runtime library, which initializes the runtime, runs global constructors, and then calls your function (or if you prefer a...

Code