[Interest] XAML and CX in Qt for Windows Phone
Andrew.Knight at digia.com
Wed Aug 13 11:32:48 CEST 2014
> Hi all !
> In Windows Phone 8, Microsoft provided a new technique for native development (C++). There are 2 template for native :
> Native Only (only use C++) template: this template only use pure C++ with limited access to Platform API (C# implementation like Camera, Push Notification, etc.). It has been only used
> for game development (with DirectX). XAML + C# + C++ template: with this template, in fact, it is “general Windows Phone template” with XAML for
> layout, C# for logic processing and C++ for backend heavily processing. Example, the game render would be written in C++ (like native only) but it would be rendered on a control in XAML. MS provided a mechanism
> for communicate between C# and C++, is “CX” (much like C++.net) and it much like JNI mechanism in Android. CX allows C++ can access C# Platform API,
> which can’t be accessed directly from C++.
> In Qt, when i want to build for Windows Phone, i will create Visual Studio Solution by “qmake” and build it in Visual Studio, but the output solution of it is > “Native Only Template”, thus i can’t write CX and integrated any Ad Banner for my app.
> Please add qmake optional for create Xaml template. It's very useful!
As you have noted, Windows Phone allows for "Native Only" development, and this is what Qt uses. We do not use any CX, C#, or XAML in the Qt codebase, and this is likely to remain the case as we go along.
That said, there is nothing preventing you from using CX in your code. You simply need to add
QMAKE_CXXFLAGS += -ZW
to your .pro file to enable the extensions.
XAML integration is also possible in theory, but it requires major changes to Qt. If you're not planning to use any Qt UI integration (Widgets, Qt Quick, etc.), then you probably won't have any serious issues using XAML, though. The two experiments are available on Code Review:
They involve modifying winmain, a static BSD-licensed support library in qtbase. You are welcome to do something similar in your app; just rebuild winmain or link to your version of winmain instead.
So, to summarize: we don't use these features in Qt (and have no plans to), but there are ways to use them in your app.
P.S. What ad banner framework are you using? It may actually be possible to use it from native C++ by generating headers from the winrtmidl compiler.
More information about the Interest