1. 程式人生 > >如何在 Qt中呼叫 WinRt API

如何在 Qt中呼叫 WinRt API

不準備寫很多,僅僅簡單地說一下。

可以在Qt的程式碼中呼叫 WinRT的 API 嗎?

可以。 使用 WRL。 但是WRL 沒有任何文件,並且非常複雜,建議使用此開源庫,對WRL封裝了一層,好用多了:https://moderncpp.com/  

對於非同步呼叫的 API介面 可以參照 非同步程式設計 頁面 :https://moderncpp.com/asynchronous-programming/

對於不懂的問題,可以嘗試在twitter上問一下作者,看一下視訊,自己領悟一下,參照一下windows的 cpp sample,寫法基本上差不多的。大大的簡化了呼叫WRL的流程。

 為什麼這麼做?

因為Qt不提供一些對WinRT的系統呼叫,比如串列埠讀寫,不知道為什麼。

下面連結一些資料:

Moderncpp 的官方網站:https://moderncpp.com/

Qt論壇上 某人對WRL的呼叫例子,以及為何推薦 moderncpp: https://forum.qt.io/topic/68670/how-can-i-use-winrt-c-apis-in-at-qt-winrt-app/2

Moderncpp 的倉庫地址:https://github.com/kennykerr/modern

微軟官方對WRL的解釋(內容之少也是呵呵了):https://msdn.microsoft.com/en-us/library/hh438466.aspx

附加閱讀:

微軟官方對為什麼設計出  c++/cx這麼牛逼的東西 的解釋:https://blogs.msdn.microsoft.com/vcblog/2011/10/20/inside-the-ccx-design/

微軟官方對c++/cx的介紹:https://msdn.microsoft.com/en-us/library/windows/apps/hh699871.aspx

Qt WinRT的 書,寫的比較寬泛,不過還是解釋了我心頭的很多疑惑,比如Qt是如何呼叫WinRtAPI的。:https://github.com/andrewknight/winrt

Qt官方部落格 解釋了 為什麼Qt沒有用c++/cx 而是 WRL:https://blog.qt.io/blog/2013/04/19/qts-winrt-port-and-its-ccx-usage/

-----------------------------------------------------------------2016.10.24------------------------------------------------------------------------------------------------------------------------

後來我問了moderncpp的作者,他給了我這個連結: 看起來是微軟官方的庫:https://github.com/Microsoft/cppwinrt

相關推薦

如何在 Qt呼叫 WinRt API

不準備寫很多,僅僅簡單地說一下。 可以在Qt的程式碼中呼叫 WinRT的 API 嗎? 可以。 使用 WRL。 但是WRL 沒有任何文件,並且非常複雜,建議使用此開源庫,對WRL封裝了一層,好用多了:https://moderncpp.com/   對於非同步呼叫的 API

Qt呼叫OpenCV函式庫時Crashed問題的解決。

              這幾天想在虛擬機器上搭建Ubuntu的開發環境,包括了Matlab和QT(C++)的開發工具安裝等,同時由於做影象處理,所以還必須要安裝FFMPEG和OpenCV庫。下面就

QT呼叫外部程式的方法 QProcess類

QT4對於介面程式設計無疑是一個很方便的工具。但是由於它介面開發專項特性,可能導致了某些方面的不足(到目前為止暫時沒有使用到這類複雜功能,所以只能是推測)。這樣當整個程式需要某些功能時,就需要外部模組的支援。為了能夠與外部程式相互聯絡,Qt4提供了強大的外部程式呼叫類。先說說

QT呼叫外部程式的方法

    我做的那個小軟體的圖形介面是基於QT3.2的,在主介面的命令列編輯框輸入命令以後要執行別人已經寫好的可執行檔案。這些可執行檔案執行的時間比較長,在終端上執行時會顯示一些執行的資訊,最後才顯示執行結果。我的介面上有一個文字框,我想把它們在後臺執行過程中的資訊不斷新增到文字框中,相當於實時顯示吧,不過要求

QT呼叫之前已用c++寫好的程式

核心程式已經用c++寫好了,現在在用QT編一個使用者介面,想在這個介面中呼叫這個程式,並且把結果在介面中顯示出來。 程式是用c++寫的,最後出來一個debug資料夾,裡面有一個.exe檔案,這就是要呼叫的程式,是封裝好的。有個要注意的地方是,這個exe檔案 在執行的時候要從

Qt學習(十一) 在Qt呼叫CMD命令示例

程式碼: QProcess p(0); p.start("cmd", QStringList()<<"/c"<<"ping www.baidu.com");

Qt的利用QProcess呼叫外部程式

今天工作中要Qt呼叫記事本來開啟一個檔案。上網查了一下用QProcess用法,一般的QProcess開啟外部程式.exe檔案,下面總結一下,挺簡單的。 int QProcess::execute(const QString &program, const&n

怎樣在自己的網頁呼叫百度API

 https://blog.csdn.net/u010251278/article/details/52877370 以下內容轉自上述網站,為了以後的學習方便,為此才特地將該網站內容轉到自己的部落格,多謝博主,見諒! step1:獲取金鑰 為了統一平臺服務的配額管理,JavaScript AP

通過qt在linux系統下對c++進行封裝獲得so庫並在在其他程式呼叫共享庫

在qt下封裝.so 開啟qt新建專案,選擇這個 2、生成了兩個.h檔案和一個main.c檔案,這裡參照.h檔案構建標頭檔案,宣告函式變數等,也就是展現給客戶使用的部分。 之後在.c檔案中對自己的函式進行定義 點編譯,就可以了,可以看到在專案資料夾中生成了.s

C++帶有預設引數的宣告和定義。Qt重寫預設建構函式。C++函式呼叫時實參個數和函式定義時的形參個數不一致時的處理。

1、Qt中自動生成的建構函式 (1)Qt中自動生成的建構函式的宣告 class Chat : public QWidget { Q_OBJECT public: explicit Chat(QWidget *parent = 0); //宣告建構函式,可以帶有初始值“=0”

ubuntu : Qt 使用mysql自身的API

    這裡用來分享下ubuntu環境下,Qt使用mysql自身的API.     背景: 折騰了一天來配置mysql的驅動, 有太多問題,最終還是沒有解決。因此放棄使用QSqlDatabase等相關函式,直接用mysql本身的API連結資料庫。      首先是要安裝m

QTQT的學習:在QT如何呼叫ROS庫

舉例:目前正在QT開發介面等,但是需要用到ROS的訂閱釋出機制,訂閱別的ROS模組的topic. (3)特別重要,否則編譯不過: 配置qt的啟動檔案。需要在qt啟動時載入ros的環境變數 sudo gedit ~/.local/share/application

Pepper/Nao中級教程:第五章 如何在Choregraphe呼叫百度翻譯API

目標 我希望讓機器人做翻譯,但是Naoqi自身是沒有翻譯API的。 那麼我可以呼叫百度翻譯API來實現翻譯功能。 原理 百度API是RESTfulAPI,直接向百度API的URL發出請求, 返回值中就

Android Studio呼叫高於minSdkVersion版本API, 無提示 (Lint問題),開啟api版本檢測

一. 坑: 呼叫高於minSdkVersion版本的API時, AS無提示 ! 最近重構專案時用到了HandlerThread類, 程式碼中呼叫了此類的quitSafely()方法, 結果導致了下面的錯誤:   呼叫高版本api導致的crash.png 經過一番折騰,

如何在微信小程式呼叫騰訊地圖api

微信小程式的地圖api是非常有限的,如果要搜尋地圖上的位置,比如附近的醫院、學校等,就需要使用地圖api,使用騰訊地圖api的過程如下:一、開發者申請騰訊地圖驗證完手機郵箱之後,就可以申請開發者金鑰    並解壓,然後將其解壓放入你的微信小程式開發目錄的util中,這個壓縮檔

Android呼叫API實現查詢身份證資訊

要實現這個功能,首先就要知道如何通過Http協議訪問網路,向網路傳送請求,其次瞭解如何解析JSON或者XML檔案。1.我的身份證查詢介面是在聚合資料申請的,完成認證後,你會得到一個KEY,這在之後會用到。2.建立佈局檔案<LinearLayout xmlns:andro

[Qt]Qt的Connect呼叫過載signal的問題

最近遇到個問題,如果不用SIGNAL,SLOT的連線方式,想在connect中使用lamda表示式,那怎麼區分控制元件的過載的訊息函式呢? 可以這樣做,先給過載的訊息函式重新命名,例如,給QCombobox中的currentIndexChanged(int index)

SpringCloud之如何在專案呼叫高德地圖API

登入高德開放平臺http://lbs.amap.com/,成為開發者,這個過程需要繫結郵箱。 成功後進入控制檯。點選應用管理。並建立新應用。應用名稱都可以自己看著填。 成功後就可以新增key了,當然,也要有名稱等資訊。 ------------------到這裡完成了第

Qt程式呼叫C#編寫的dll

最近在使用Qt整合以前的一個工具時,發現有幾個dll是採用C#寫的,當然可以把C#寫的dll重新在Qt中用C++寫,雖然這是幾個C#寫的dll的函式介面使用的引數都比較簡單,只用了int和string型別等,但在函式內部卻還使用了C#的專用一些類,如果重寫還是很麻煩,就查找了

QT 5.7 QWebChannel如何呼叫JavaScript以及JavaScript如何呼叫QT函式

文章用來回憶內容,不喜勿噴。 QWebChanne與js互動 下面是用來與JS互動類 webconnect.h #ifndefWEBCONNECT_H #defineWEBCONNECT_H #in