2015-04-06 89 views
2

我們有一個使用舊的MFC GUI的C++桌面應用程序;現在我們想要有一個更現代的觸摸GUI。我們想使用Windows Metro App風格。
因爲我們使用一些鏈接共享mfc庫的sdk,我們認爲我們不能使用這些組件編寫WinRT應用程序(或者我們錯了?)。
桌面應用程序中的WinRT GUI

是否有可能在桌面應用程序中使用WinRT GUI API(純C++沒有.net世界的任何東西,如WRL/C++)?
我們看到一些例子,即using accelerometer WinRT api,但不是GUI組件。

+1

這是一個完美的有效問題。爲什麼這是封閉的。這個閉幕式的法西斯真的開始糟透了。 答案是:不 - 你不能混用WinRT GUI和普通的Win32 GUI。而且我不認爲WinRT目前足夠好來移植它。上面提到的原因是,由於所有這些老的Win32 windows消息都沒有人願意破解,因此Win32是不可改進的,因此他們在它之上創建了一個新的級別。但像往常一樣,MS在這次任務中停下了腳步,留給我們的是Cocoa可用性更低的東西。 – Lothar

回答

1

請記住,C++/CX是純原生的東西。沒有.NET依賴關係等等。它只是一個簡化COM互操作的語言擴展(我相信你知道WinRT是基於COM的API),但是如果你不喜歡C++/CX,可以考慮將WRL用於低級別互操作。

C++/CX的語言擴展保存時間,但您不必使用它們。如果使用Windows運行時C++模板庫(WRL),則可以從標準C++獲得跨語言互操作的較低級別訪問權限。 WRL使用COM程序員熟悉的約定。

WRL是一種編譯器不可知的方式來創建和使用Windows運行時API。您可以使用WRL而不是C++/CX語法。它使您能夠針對性能或特定場景優化代碼。它還支持不使用異常的應用程序開發方法。