The Windows 8 beta was released a few weeks ago, and I've been investigating Microsofts new WinRT library. WinRT is a whole new set of APIs that wrap existing Win32, COM, and .NET Framework APIs for creating applications for Windows' new Metro style. Due to the fact that the API is backed by a native interface based on COM, Microsoft touts the ability to create your in a wide variety of languages HTML5+CSS, JavaScript, C#, Visual Basic, and C++. But what about other languages, such as Delphi? Well, it comes with somewhat relative ease that bindings can be made for any language using the provided API metadata files (.winmd files). I say relative ease, because the bredth of the APIs is fairly wide, but because the .winmd files are Ecma-355 metadata, the Windows APIs provided in Winapi.Cor (cor.h) can be used to create a tool to read this metadata and turn it into useable interfaces. (As an aside, The easiest way to view the contents of these files from the developer preview is to open them with ildasm, the .NET Framework IL Disassembler.)
Once I created flat interfaces into the runtime classes, +Allen Bauer pointed me at a few articles by Ian Griffiths on Native WinRT development in C++ (http://www.interact-sw.co.uk/iangblog/2011/09/16/real-native-winrt). Following his example, it was relatively straightforward to get a Delphi application up and running that initializes WinRT, creates an Windows.UI.Xaml.Application, Attaches it's OnLaunched event, and populated the screen with a simple bit of Hello world Xaml, and that's what you can see in the attached screenshot. You'll notice it is running in a window and not fullscreen like a typical Metro style app. That's mainly because I haven't packaged it as an Application package and deployed it, a process which ran into further snags I may go into at a further time.
Anyway, the point of this post is: It's possible to create Metro style apps using Delphi, and it will be possible to create an object oriented framework that hides all the glue code required to use the raw COM interfaces that will make it as easy, if not easier, to program than C++, C#, Visual Basic, or JavaScript.
Photo
Shared publiclyView activity