<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jeremy Kuhne's Blog : All Things Acrylic</title><link>http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx</link><description>Tags: All Things Acrylic</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Interop with Office</title><link>http://blogs.msdn.com/jeremykuhne/archive/2006/01/25/517249.aspx</link><pubDate>Wed, 25 Jan 2006 06:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:517249</guid><dc:creator>jkuhne</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jeremykuhne/comments/517249.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeremykuhne/commentrss.aspx?PostID=517249</wfw:commentRss><description>&lt;P&gt;Before I dive in, I've put together a &lt;a href="http://blogs.msdn.com/expression/archive/2006/01/24/517157.aspx"&gt;simple doc&lt;/A&gt; showing how you can liven up the clip art in Office using Graphic Designer that you might find of interest.&lt;/P&gt;
&lt;P&gt;The other "feature" that was included in the current CTP of Expression Graphic Designer (EGD)&amp;nbsp;is better interop with Office apps.&amp;nbsp; EGD now has vastly better support for importing WMF/EMF files and clipboard data.&amp;nbsp; In addition, if you want to pull out the original source image for a graphic in Office you can do so through the "Office Image" selection in the Paste Special menu item.&lt;/P&gt;
&lt;P&gt;These were both done by me a few months ago as&amp;nbsp;I grew frustrated with trying to get content back and forth between Office.&amp;nbsp; There is a lot of strangeness that occurs that makes the experience less than stellar.&amp;nbsp; To help shed some light on the situation I'll run through exactly what happens in the rest of this post.&lt;/P&gt;
&lt;P&gt;When you copy from EGD a BMP, PNG, GIF, and JPG are put on the clipboard at the current resolution of the document.&amp;nbsp; PNG is particularly useful with Office applications as it supports transparency.&amp;nbsp; The first strangeness is that if you paste into Office you get a different default paste depending on the application you are in.&amp;nbsp; In the case of Word you do &lt;STRONG&gt;not&lt;/STRONG&gt; get PNG by default and as such you must paste special to get the PNG.&amp;nbsp; In PowerPoint, however, you &lt;STRONG&gt;do&lt;/STRONG&gt; get the PNG by default.&lt;/P&gt;
&lt;P&gt;Where things get particularly ugly is when you copy &lt;STRONG&gt;out&lt;/STRONG&gt; of Office.&amp;nbsp; Office will always render graphics at your screen resolution (typically 96dpi).&amp;nbsp; For me, at least, this usually ends up looking horrible.&amp;nbsp; A great example is taking a screenshot out of a PowerPoint presentation.&lt;/P&gt;
&lt;P&gt;To get the original image out of Office you hit the second strangeness...&amp;nbsp; In Word it isn't possible (afaik).&amp;nbsp; If you want to get the image out you must first copy from Word and then into PowerPoint where you &lt;STRONG&gt;can&lt;/STRONG&gt; save the original.&amp;nbsp; (There are more differences with the other Office apps.&amp;nbsp; I'll only detail Word/PowerPoint here for now.)&amp;nbsp; In PowerPoint if you right click on a graphic and select "Save As Picture".&amp;nbsp; Depending on the source you may get a drop-down arrow on the "Save" button that will let you "Save Original Picture".&lt;/P&gt;
&lt;P&gt;Since Office obviously keeps the original PNG I thought it would be much better to grab that if it were at all possible, which fortunately it is.&amp;nbsp; If you copy an image out of Office you will get the new paste special selection of "Office Image" as previously described.&amp;nbsp; The image will be inserted as an image object that will be sized the same as the object in Office with the full DPI of the backing image.&amp;nbsp; (Rotation is something we might support later.&amp;nbsp; Some other special features such as drop shadows might be added if there is enough interest.)&lt;/P&gt;
&lt;P&gt;If you take things back into Office again you'll rasterize at the doc DPI as stated earlier.&amp;nbsp; It is best, of course, to keep XPR files around for any content you send to Office.&lt;/P&gt;
&lt;P&gt;Office drawings (AutoShapes, WordArt, etc.) are&amp;nbsp;put on the clipboard as EMF, so you're best off pasting special in EGD as&amp;nbsp;this format.&amp;nbsp; (Same goes with WMF/EMF clipart.)&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;(This brings up an interesting little side effect that you can take advantage of in Office.&amp;nbsp; If you copy an Office object that normally doesn't antialias&amp;nbsp;such as a chart you can get antialiasing by making a few in-app conversions.&amp;nbsp;&amp;nbsp;Take a chart, copy,&amp;nbsp;and then paste as EMF back into the Office app.&amp;nbsp; After pasting as EMF right click and select "Edit Picture".&amp;nbsp; You now have an antialiased copy of the original!)&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;I intend to make the experience a little more transparent in the future if at all possible.&amp;nbsp; I'll be looking for any and all feedback on what would make life easier for you.&amp;nbsp; In addition, if you have any WMF/EMF content that you can't get into EGD, please let me know and I'll take a look.&amp;nbsp; A metafile is simply a collection of Win32 drawing commands, which makes it pretty broad in theory.&amp;nbsp; In practice, however, not many calls are supported by apps that output metafiles.&amp;nbsp; Your input will help me prioritize.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=517249" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx">All Things Acrylic</category></item><item><title>New versions of Expression Graphic Designer and Interactive Designer available!</title><link>http://blogs.msdn.com/jeremykuhne/archive/2006/01/24/517043.aspx</link><pubDate>Tue, 24 Jan 2006 23:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:517043</guid><dc:creator>jkuhne</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jeremykuhne/comments/517043.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeremykuhne/commentrss.aspx?PostID=517043</wfw:commentRss><description>&lt;P&gt;Our January 2006 CTPs are available!&amp;nbsp;&amp;nbsp;&lt;A href="http://www.microsoft.com/products/expression/en/default.mspx"&gt;http://www.microsoft.com/products/expression/en/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;What's new??&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;We've got official names now.&amp;nbsp; (Acrylic =&amp;gt; Graphic Designer; Sparkle =&amp;gt; Interactive Designer)&lt;/LI&gt;
&lt;LI&gt;Interactive Designer is publicly available for the first time!&lt;/LI&gt;
&lt;LI&gt;Exporting to XAML from Graphic Designer (EGD)&amp;nbsp;has been &lt;STRONG&gt;greatly&lt;/STRONG&gt; improved.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The XAML exporter is the only real new feature for this CTP for EGD.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[There is, however, something important buried in there&amp;nbsp;if you do any sort of interop with Office apps.&amp;nbsp; I'll post about it later today, so keep an eye out. ;)]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=517043" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx">All Things Acrylic</category></item><item><title>New version of Acrylic available for download!</title><link>http://blogs.msdn.com/jeremykuhne/archive/2005/10/17/481698.aspx</link><pubDate>Mon, 17 Oct 2005 06:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:481698</guid><dc:creator>jkuhne</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jeremykuhne/comments/481698.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeremykuhne/commentrss.aspx?PostID=481698</wfw:commentRss><description>&lt;P&gt;I encourage you to take a look.&amp;nbsp; We've done a lot to tighten things up since the last release.&amp;nbsp; We're still hard at work, so any and all feedback is greatly appreciated.&amp;nbsp; (Links to the newsgroup can be found on the site.)&amp;nbsp; &lt;A href="http://www.microsoft.com/expression"&gt;http://www.microsoft.com/expression&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=481698" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx">All Things Acrylic</category></item><item><title>Expression on Channel9</title><link>http://blogs.msdn.com/jeremykuhne/archive/2005/09/14/466410.aspx</link><pubDate>Wed, 14 Sep 2005 22:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:466410</guid><dc:creator>jkuhne</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jeremykuhne/comments/466410.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeremykuhne/commentrss.aspx?PostID=466410</wfw:commentRss><description>&lt;P&gt;A nice video that will give you a bit of what's going on with Expression.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/Showpost.aspx?postid=115387"&gt;http://channel9.msdn.com/Showpost.aspx?postid=115387&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=466410" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx">All Things Acrylic</category></item><item><title>How suite it is: Expression!</title><link>http://blogs.msdn.com/jeremykuhne/archive/2005/09/14/how-suite-it-is-expression.aspx</link><pubDate>Wed, 14 Sep 2005 19:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:466208</guid><dc:creator>jkuhne</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jeremykuhne/comments/466208.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeremykuhne/commentrss.aspx?PostID=466208</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://www.microsoft.com/expression" mce_href="http://www.microsoft.com/expression"&gt;http://www.microsoft.com/expression&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;It's a great relief to finally have this out in the open.&amp;nbsp; There's a suite on the way, folks, and we're working hard every day to pack as much cool functionality in as we can for you.&lt;/P&gt;
&lt;P&gt;Take a look at the web site, download the Acrylic preview!&amp;nbsp; We're eager for feedback!&lt;/P&gt;
&lt;P&gt;[Modified 2/17/2008: removed dead picture link]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=466208" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx">All Things Acrylic</category></item><item><title>New Version of Acrylic Available!</title><link>http://blogs.msdn.com/jeremykuhne/archive/2005/08/15/new-version-of-acrylic-available.aspx</link><pubDate>Tue, 16 Aug 2005 00:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:451907</guid><dc:creator>jkuhne</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/jeremykuhne/comments/451907.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeremykuhne/commentrss.aspx?PostID=451907</wfw:commentRss><description>&lt;P&gt;I'm happy to report that the August 2005 Community Technology Preview is live on &lt;A href="http://www.microsoft.com/products/expression" mce_href="http://www.microsoft.com/products/expression"&gt;http://www.microsoft.com/products/expression&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;There are a number of videos and feature details at &lt;A href="http://www.microsoft.com/products/expression/features.aspx" mce_href="http://www.microsoft.com/products/expression/features.aspx"&gt;http://www.microsoft.com/products/expression/features.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Have fun!&lt;/P&gt;
&lt;P&gt;[Edited 2/17/2008:&amp;nbsp; Removed dead picture link.]&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=451907" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx">All Things Acrylic</category></item><item><title>Acrylic Automation: Crossing the Barrier</title><link>http://blogs.msdn.com/jeremykuhne/archive/2005/06/11/428307.aspx</link><pubDate>Sat, 11 Jun 2005 17:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:428307</guid><dc:creator>jkuhne</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jeremykuhne/comments/428307.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeremykuhne/commentrss.aspx?PostID=428307</wfw:commentRss><description>&lt;P&gt;Ok, so I really was chomping at the bit to blog.&amp;nbsp; Now that we've gone beta I can get a lot of things off of my chest.&amp;nbsp; Just too awkward to blog much before the product was announced, you know?&amp;nbsp; In this post I'm going to give a bit of info on how to write a managed dll that interops with unmanaged code.&amp;nbsp; (FYI: I can't really give the explicit details on how to access the Acrylic automation interfaces at this point.&lt;/P&gt;
&lt;P&gt;This is going to be in Managed C++ in 2005.&amp;nbsp; I've mentioned before that it blows P/Invoking out of the water.&amp;nbsp; The syntax is radically different than the Managed Extensions for C++ that was in VS.Net and is really remarkably easy to read and use for those who know C#, so be strong! ;)&lt;/P&gt;
&lt;P&gt;Making a project managed in C++ is simply a matter of setting the /clr switch, which you can get to in the project properties panel under "Configuration Properties: General: Project Defaults: Common Language Runtime support".&amp;nbsp; There are some variations of this switch that are pretty well documented and I won't go into them here.&amp;nbsp; Our configuration type is "Dynamic Library (.dll)", of course.&amp;nbsp; (This is in the same properties&amp;nbsp;area.)&lt;/P&gt;
&lt;P&gt;We include the standard&amp;nbsp;&amp;lt;windows.h&amp;gt; header and windows version pound defines as we need access to the Win32 api in a number of places.&amp;nbsp; Here's a simplified code snippet that shows you how things work:&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#008000&gt;// Plugin.h&lt;/FONT&gt;&lt;BR&gt;
&lt;FONT color=#008000&gt;// You need to include the relevant headers for the interfaces you're trying to hit.&lt;/FONT&gt;
&lt;FONT color=#008000&gt;// This would be defined by the App you're trying to interact with.&lt;/FONT&gt;
&lt;FONT color=#0000ff&gt;#include&lt;/FONT&gt; "AppPlugginInterfaceHeaders.h"&lt;BR&gt;
&lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; "C" &lt;FONT color=#0000ff&gt;// Or "C++" whatever your application uses&lt;/FONT&gt;
{
&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&lt;/FONT&gt;
&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// The application plugin entry point.&lt;/FONT&gt;
&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// The __declspec(dllexport) specifies that this function should be exported.&lt;/FONT&gt;
&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// IApplicationPluginHost is defined in the header provided by the app and included above.&lt;/FONT&gt;
&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&lt;/FONT&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;__declspec&lt;/FONT&gt;(&lt;FONT color=#0000ff&gt;dllexport&lt;/FONT&gt;) &lt;FONT color=#0000ff&gt;bool&lt;/FONT&gt; PluginEntry(IApplicationPluginHost *hostAPIs);
}
&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#008000&gt;// Plugin.cpp&lt;/FONT&gt;&lt;BR&gt;
&lt;P&gt;
&lt;FONT color=#008000&gt;// Or wherever else you have your windows includes if you do..&lt;/FONT&gt;
&lt;FONT color=#0000ff&gt;#include&lt;/FONT&gt; "Stdafx.h"
&lt;FONT color=#0000ff&gt;#include&lt;/FONT&gt; "Plugin.h"&lt;BR&gt;
&lt;FONT color=#0000ff&gt;__declspec&lt;/FONT&gt;(&lt;FONT color=#0000ff&gt;dllexport&lt;/FONT&gt;) &lt;FONT color=#0000ff&gt;bool&lt;/FONT&gt; PluginEntry(IApplicationPluginHost *hostAPIs)
{
&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Code to check and save the interface passed back from the application.&lt;/FONT&gt;
}
&lt;/P&gt;&lt;/PRE&gt;
&lt;P&gt;That's pretty much the sum of it.&amp;nbsp; From there it's using the host api pointer to grab other interfaces and access functions through those interfaces.&amp;nbsp; So something like &lt;FONT face="Courier New"&gt;hostAPIs-&amp;gt;SomeFunction()&lt;/FONT&gt;. We do also have a DllMain (which &lt;EM&gt;must&lt;/EM&gt; be unmanaged according to the SDK) to do some thread initialization that is very app specific in our case.&amp;nbsp; (This would be DLL_THREAD_ATTACH and DLL_THREAD_DETACH message processing.)
&lt;P&gt;In case you're curious, putting completely unmanaged code in your /clr app requires a #pragma managed(push, off) statement before said code and a #pragma managed(pop) afterwords.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=428307" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/Managed+C_2B002B00_/default.aspx">Managed C++</category><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx">All Things Acrylic</category><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/General+Coding/default.aspx">General Coding</category></item><item><title>Automating Acrylic</title><link>http://blogs.msdn.com/jeremykuhne/archive/2005/06/09/427552.aspx</link><pubDate>Thu, 09 Jun 2005 23:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:427552</guid><dc:creator>jkuhne</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jeremykuhne/comments/427552.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeremykuhne/commentrss.aspx?PostID=427552</wfw:commentRss><description>&lt;P&gt;Here's the first of many posts to come out of what I've learned and experienced attempting to automate Acrylic.&lt;/P&gt;
&lt;P&gt;As mentioned before and elsewhere, Microsoft acquired Creature House a few years ago.&amp;nbsp; With this acquisition came the creative design toolset Creature House Expression.&amp;nbsp; We've been working on a new version of the application and one of the challenges I faced in testing the application was finding a way to automate it.&lt;/P&gt;
&lt;P&gt;Acrylic is a pretty large unmanaged codebase (the executable is about 10mb) with a&amp;nbsp;wide&amp;nbsp;variety&amp;nbsp;of features.&amp;nbsp; When I started working on it the application did not have automated tests running against it or an api to write tests against.&amp;nbsp; We intended to change this, but the route to take took some effort to discern. Acrylic has a number of custom controls that aren't actual Windows controls (no HWND of their own).&amp;nbsp; It also has standard Windows controls (in dialogs, mostly).&amp;nbsp; To complicate matters, the application swallows modifier keys in mouse and keyboard messages.&amp;nbsp; We really couldn't use any "off the shelf" solutions.&lt;/P&gt;
&lt;P&gt;An api was added to the application to&amp;nbsp;load&amp;nbsp;&amp;amp; run automation dlls and&amp;nbsp;expose internal state (through interface classes) and provide a method to send modifier keys with input messages.&amp;nbsp; The question as to whether to write unmanaged C++ code directly against this api or put some sort of wrapper layer in to let most of our test code be written in managed code.&lt;/P&gt;
&lt;P&gt;I pushed very hard to write as much of the test automation as possible in managed code.&amp;nbsp; Why?&amp;nbsp; Well, reliable code would be easier to write with the managed safety net.&amp;nbsp; I didn't want to be spending too much time worrying about things like pointer "accidents" in the test code.&amp;nbsp; In addition, there is a great deal of effort and experience being built up with managed tools that take advantage of things like reflection, generics, etc.&amp;nbsp; Another very important thing to me was to be able to easily utilize help from others that could whenever the opportunity arose.&lt;/P&gt;
&lt;P&gt;We did ultimately go with pushing towards mostly managed code.&amp;nbsp; Visual Studio 2005 made this very possible.&amp;nbsp; Here's how we did it:&lt;/P&gt;
&lt;P&gt;We wrote a Managed C++ dll to interface with the internal test interfaces and expose those interfaces in a managed way.&amp;nbsp; Our test libraries and test cases are in seperate dlls (C# mostly, some VB.Net tools).&amp;nbsp; A managed harness kicks off the application with automation enabled (standard shell execute pretty much).&amp;nbsp; The application loads the managed C++ dll (not knowing it is managed) and tells it to kick off tests.&amp;nbsp; The dll tells the test harness to kick off tests.&amp;nbsp;&amp;nbsp; The test harness then starts executing attributed test methods as specified in a configuration file.&lt;/P&gt;
&lt;P&gt;Works like a charm.&amp;nbsp; Writing the interop code in the new managed C++ is incredibly straight forward.&amp;nbsp; It's so straight-forward that once I learned how to really use it I threw out some&amp;nbsp;14,000 lines of Win32 interop code I had written in C# and rewrote the entire thing in managed C++ (made it much better and it took about a week and a half or so).&amp;nbsp; P/Invoke is just way too painful by comparison once you've seen how well the new C++ interops.&lt;/P&gt;
&lt;P&gt;I plan to spend some time here writing about utilizing the new C++ with a particular bent towards interoping with Win32.&amp;nbsp; I'll also talk about other things that I've had to deal with that don't seem too particularly well documented yet (such as the new generic collections and anonymous delegates).&amp;nbsp; If there is anything you're aching to see I'm open to feedback and will direct my efforts towards hitting the things people are interested in.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=427552" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/Managed+C_2B002B00_/default.aspx">Managed C++</category><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx">All Things Acrylic</category><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/General+Coding/default.aspx">General Coding</category></item><item><title>Acrylic has gone live!</title><link>http://blogs.msdn.com/jeremykuhne/archive/2005/06/09/427481.aspx</link><pubDate>Thu, 09 Jun 2005 20:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:427481</guid><dc:creator>jkuhne</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jeremykuhne/comments/427481.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jeremykuhne/commentrss.aspx?PostID=427481</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;[updated 1/31/06 to use new blog photo gallery]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Greetings from within Microsoft!&amp;nbsp; I'm excited to let you know that we've just released the beta for Acrylic, an application for professional graphic designers.&amp;nbsp; Please go take a look, download, and send in your feedback! (&lt;a href="http://www.microsoft.com/expression"&gt;http://www.microsoft.com/expression&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;(To see some art generated with the application, download and install.&amp;nbsp; You can also see some examples by following the link to previous versions.)&lt;/p&gt;
&lt;p&gt;I've been working hard trying to get automated testing running for this application and you can expect to see some posts from me regarding the issues I've faced trying to automate an unmanaged application with VS 2005 (Whidbey).&amp;nbsp;&amp;nbsp; I'll also be posting information about the Acrylic application itself.&amp;nbsp; If there are any specific topics feel free to suggest them.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a HREF="/photos/jkuhne/images/521146/original.aspx" target=_blank&gt;&lt;img src="/photos/jkuhne/images/521146/original.aspx" border=0/&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=427481" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jeremykuhne/archive/tags/All+Things+Acrylic/default.aspx">All Things Acrylic</category></item></channel></rss>