« Setting up SwapChainBackgroundPanel in a XAML app | Parsing URI query strings in Windows 8 metro-style apps » |
Writing a Windows 8 Metro Hello World app using C#, XAML, and calling into a C++ component
Sunday, August 5, 2012
Windows 8 and the new WinRT promises fluid interoperability between C#, C++, and HTML/Javascript. Today we'll take a quick look at a Hello World app built using C# and XAML calling into a C++ component.
First, create a new blank C#/XAML app and call it HelloInterop:
Next, add a new project to this solution:
Choose the C++ Windows Runtime Component project type and call it HelloCpp.
Finally, right click on the C# HelloInterop project in the Solution Explorer and choose "Add Reference..." then add the C++ component as a reference (you may have to choose "Solution" on the left pane first):
Now, we'll work on the C++ code. Open up Class1.h
. (Feel free to rename it, but for this guide we'll just stick with this name.) Notice that it's a public ref class
and is contained within a namespace
— this is required if this class is to be visible to external consumers. Let's add a simple function. Add this line under the constructor's declaration:
Platform::String^ ConcatString(Platform::String^ a, Platform::String^ b);
Now open Class1.cpp
and implement this function by adding this code to the bottom of the file:
String^ Class1::ConcatString(String^ a, String^ b) { return String::Concat(a, b); }
To make the app call this function, let's add a TextBlock
to the main page. Open MainPage.xaml
and add this line to the page inside the Grid
:
<TextBlock Name="CppTextBlock"/>
In MainPage.xaml.cs
, add some code inside OnNavigatedTo()
to set the text of this element:
var c = new HelloCpp.Class1(); this.CppTextBlock.Text = c.ConcatString("Hello ", "World");
Now run the app and you should see "Hello World" on your screen.
Comments
There are no comments.