2009-08-28 29 views
8

私はWindows上でアプリケーションを開発します。私は前にそれをやったことがありません;-)Windows用のWinFormsまたはWPFまたはQtバックエンドとしてC/C++を使用するGUI

私はC/C++で書かれている必要がある重いオーディオの計算をする必要があります。この部分はルーム補正アルゴリズムになり、Matlabでチャンネルを実行するには約10秒かかります。それはC/C++で書かれていなければなりません。なぜなら後でC/C++でプログラムされなければならないDSPに移植されるからです。

さらに、計算を見直したり、結果を視覚化したり、計算パラメータを変更するためのGUIが必要です。このGUIの難しい部分は、スペクトル、スペクトログラム、オーディオ波形などのプロットがたくさんあります。

今、私はWPFがWindows GUIのすべての怒りだと聞いていますが、それはC#に限られているようです。私のC/C++コードをいくつかのC#GUIコードと統合する簡単な方法はありますか?あるいは、私はむしろWinFormsを取って、C++ですべてを書くだけですか? Qtも同様に機能し、クロスプラットフォームの機能を「無料」で提供しますか?

私はC/C++、Matlab、VST-developmentについていくつかの経験がありますが、実際のアプリケーションを書いたことはありませんでした。正直言って、どこから始めたらいいのか分かりません。

ありがとうございます!

+2

Qtは最高のGUIツールキットです。 – Sharique

答えて

6

WPFまたはWinFormsを使用する最大の欠点は、大きな物流のオーバーヘッドである2つのプログラミング言語でプログラミングする必要があることです。

私はこのタイプの議論を以前から見てきました。低レベルにはCまたはC++、高レベルにはその他のものを使用します。この場合、Qt/C++はWPF/WinFormsと同じ高レベルなので、他のC++コードとUIを非常に簡単に統合することができます。

スペクトログラムおよびその他のグラフについては、Qwtを参照してください。

P.S:WPFはWindows上で激怒しているわけではありません。実際、市場はかなり断片化しており、WPFはあまり使用されていないGUIツールキットの1つです。そこのコードのほとんどは、MFC、WTL、Delphi、Win32などを使用しています。

2

WPFはあなたをWindowsに結びつけますが、特に言語には関係しません。 WPFアプリケーションは、C#、VB.NET、Managed C++、またはその他の.NET言語で記述できます。

Winformsも同様にWindowsに関連付けられていますが、アプリケーションはMonoで実行されるように書くことができるため、クロスプラットフォームです。しかし、Winformsは、複雑なビジュアライゼーションに関しては、ツールキットの機能がはるかに劣ります。

.NETとネイティブアプリケーション間の相互運用性は非常に強力ですが、少なくとも少しは苦労することは間違いありません。一方、ネイティブ環境でインターフェイスを実装すると、さらに苦痛が生じる可能性があります。

あなたのGUIがWindowsと.NETに結びついていれば、WPFは非常に視覚的なアプリケーションに最適です。 .NETやWindowsに依存したくない場合、Qtはあなたの唯一の選択肢のようです。

3

私はQTに関する経験はありませんが、WPFは良いですが、CPU集中度の高いアプリケーションには適していないと言えます。また、WPFと簡単にc/C++を直接統合することもできません。

巨大な学習曲線があり、C#/ WPFおよびネイティブコードと通信するためにCOMインターフェイスを作成する必要があります。またはVisual C++の.Net CLIは非常に難しく、チュートリアルも少なくなっています。

しかし、多くの人がWPF/WinFormsでのみC#、データベースアプリケーションを使用するため、問題はありません。 WPFと統合するためのCOM DLLを記述することができますが、それは難しいでしょう。

代わりにMFCで利用可能なさまざまなツールがあります.C++ MFCで優れたUIを作成するために、他の多くの商用ライブラリも利用できます.C++で親しみやすくなるほど統合が簡単になります。

また、既に知っている場合はQt。

図書館:

Prof-UIS

BCGSoft

多くがあるかもしれない、あなたは "MFC UI要素"、ライブラリなどを検索することができ、私は帰り2003-4における教授-UISを使用していました彼らは良い。

+0

これはどのライブラリですか? – bastibe

+0

私は自分の投稿を更新しました。 –

+0

このアドバイスをいただきありがとうございます – bastibe

関連する問題