As an added layer of defense against malicious software, Windows Vista introduces allows different UI applications to run with three different levels of UI privilege. Applications can freely interact with other applications of the same and lower permission...

Pixel sizes have been roughly constant for a long time, but LCD manufacturers are increasingly coming out with monitors with smaller and smaller pixels, aka high dots per inch (dpi). If an application uses the same number of pixels on a high dpi screen...

Thanks for the comments on the last post, here's part 2 of roughly 5.
We think most applications will run as fast or faster on Windows Vista, but there are some changes we want to keep an eye on. Please be on the lookout for:
Overall GDI drawing...

So mostly I blog about WPF, which is where I’ve spent most of my time the last few years. But I also work on USER and GDI, along with many full-time USER & GDI'ers, and wanted to spend a little time talking about compatibility. We put a lot of effort...

We made a couple changes to how resources (FrameworkElementaryresources) work in the last CTP, they've kind of flown under the radar so I wanted to call them out:
FindResource() throws an exception if the resources not found; we introduced a method...

Every now and then, you'll find a windows message that has no WPF equivalent. HwndSource lets you use a WndProc to get window messages; what you may not know is that you can still use the Window class.
It's not obvious how to go from a Window to a...

Tyler and I have been working on a white paper about threading for a long time now, figured I should try out the blog's new "attachments" feature and share a draft of it with you so you don't need to wait for the next CTP.
One major caveat -- the sample...

Someone on the forums was asking about how to set the mouse cursor programmatically, it reminded me about the different steps WPF uses to decide which cursor to display:
1) When the mouse moves, we query what the cursor should be and set it to that...

As WPF gets closer and closer to shipping, one of the things I spend a lot of my time doing is bug triage -- prioritizing bugs and deciding which to fix. We'd like to fix all bugs, of course, but that's just not reality. There's only so many hours in...

Lester Lobo posted an example of UsesPerPixelOpacity=true: http://blogs.msdn.com/llobo/archive/2006/02/24/538757.aspx
Keep in mind you don't need to use HwndSource -- you can use the Popup class instead, which is generally more convenient since it...

It's out, and there's been a lot of great work since the last major CTP. Layered Windows is probably the big-name feature for this release, at least out of my team (see http://blogs.msdn.com/nickkramer/archive/2005/12/14/503644.aspx for details). But...

Invalidation and PropertyChangedCallback
Whenever something happens that causes the property engine to reevaluate properties, we say that DependencyObject/property combination has been invalidated. Invalidations happen for a variety of reasons, including...

2.2 Expressions -- Dynamic resources and data binding {Binding} and {DynamicResource} both create instances of Expression. In a lot of ways, Expressions are just another kind of value for the WPF property engine to deal with. You can pass them into SetValue...

A while back I posted something about how the property engine calculates its values. Figured I would post an update, since we've continued to refine the property engine, and we've continued to refine the documentation...
Calculation is a multi-step...

One interesting thing you won't find in the XPS spec I pointed to is how to declare that one assembly is a later version of another assembly. This will be described in the formal xaml spec Rob is working on, but the quick description is you stick the...

One of the things we haven't talked a lot about is the versioning support built into xaml. Once version 2 of WPF comes out, we want people to be able to write xaml documents that take advantage of new, V2 features while still running as best is possible...

I haven't been real good about reposting questions that came up in private conversation, here's some of the more interesting ones from the last month:
What's the deal with OLE and WPF? Short answer is, we don't have any plans for something like OLE...

Magnus Hiie reported an interesting problem that some of you may be hitting (thanks Magnus!). He saw
System.Windows.Serialization.BamlParseException occurred Message="Error at element 'StaticExtension' in markup file '' : Binary format of the specified...

One piece of feedback we've heard loud and clear is that you want layered windows. Well, I'm happy to announce that based on your feedback, we now plan to officially support layered windows in WPF 1.0, coming to a future CTP near you (not necessarily...

IsHitTestVisible – want to draw something on the screen, but have the mouse input pass right through that drawing? Then set IsHitTestVisible=”false” on it.
Disabling default styling -- Controls actually have two styles for looking up its values - the...

Charles Petzold has written a couple good posts about the relationship between code and xaml, and asks, "Why is something that is so easy to do in XAML so clumsy to do in code?"
Obviously, WPF code is not always clumsy. But where it is, there's usually...

One of the questions I've heard a number of times is, "I really want to use WPF, how can I convince my boss?" I've generally shied away from answering, since there's a lot of factors specific to your situation that I don't know. What kind of business...

I'm back, it was a short trip but I had a lot of fun talking to people, learning what they are doing with Windows, and yes, learning more about Borland and Delphi. I also learned a bit more about Borland's current thinking around WPF -- none of this is...

Borland devcon starts Tuesday, so with that in mind I figured what can be more fun than putting WPF inside a Delphi application? Turns out this is both really easy and really difficult. The easy part is that hwnds are hwnds are hwnds, so Delphi hwnds...

Wow, quite a response to that last post! And I was worried that nobody would read it...
PatriotB pointed out that role-forward is the only option if you support [in-process] plug-ins. Plug-ins are another interesting topic; here, I think the long-term...