Visual C++でのGUIアプリ作成
解決済
回答 2
投稿
- 評価
- クリップ 1
- VIEW 11K+
お世話になっております。
現在、Visual C++を使ってアプリケーションの開発を行っております。
開発当初はGUIアプリを作成する予定ではなかったのですが、途中からGUIを使ってユーザーが操作できるようにしたいと考えました。
このとき、GUIの画面をアプリに追加したいと思い、自分で調べたところ次のような方法があると思うのですが、どちらがよろしい(初心者でもやりやすい)でしょうか。
1.Qtを用いてGUIを作成
2.Windowsフォームアプリケーションを用いてGUIを作成
また上記以外の方法でもGUIを作成できる方法があれば教えていただきたいです。
わかりづらい質問内容かもしれないので、補足情報が必要な場合はご指摘お願いいたします。
お手数ですが、何卒宜しくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
こんにちは。
なかなか難しい問題と思います。
初心者さんでもでWindows GUIを簡単に開発できるC++開発環境としては、C++Builderしかないように思います。Visual Studioで開発したアプリをDLL化することでC++Builderから呼び出すことは可能ですが、10年前はC言語I/Fでないとできませんでした。今はどうなのか把握してませんが、C++でのI/Fに対応することは原理的に難しいので今も無理かも知れません。
C++Builderは有償ですが、個人でも買えないことはない価格帯です。
Qtも強力ですが、かなり発展が早く多数の仕組みを実装しているため、そもそもどれを選択するべきかなかなか悩ましいです。初心者さんが使うには厳しいかもしれません。
QtはLGPL、もしくは、GPLの範囲で使うなら無償ですが、それ以外の使い方なら商用ライセンスが必要になります。当該アプリ開発の当初より商用ライセンスを締結する必要かありますので厳しいかも。
C#はC++Builder並にGUI開発は容易ですし、WEB情報も多く初心者さんでもとっつきやすいと思います。でも、C++とのI/Fに結構苦労します。ここが初心者さんにとってハードルが結構高そうです。
C++/CLIなら、C++とのI/Fは簡単と聞きますが、マイナーなのでいまいち情報も少なくやはり初心者さんがとっつくのはたいへんかも知れません。
どの道を選んでもハードルがそこそこあるので、悩ましいです。
個人的にはC#を選びそうです。以前も似た問題で結局C#を選びました。その時は他のプロジェクトメンバが既にC#に慣れていたからですが、今でもWEB情報が豊富なことと追加費用がかからない点でC#を選択しそうです。
また、C#とC++のI/FをとりもつのにC++/CLIを使うと良いという話を聞いたことがあります。
因みに、C++Builderは昔はBorlandが開発していましたので良くBCBと呼ばれます。今はEmbarcaderoが開発してます。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
どちらが、という所ですと、
・どちらが、ご本人として、とっつきやすいか
・最終目標とするGUIが作れるかどうか
の2点となるのではないでしょうか。
さて、他にもGDIでがりがり書く方法もあれば、IEコンポーネントを貼り付けて、全部HTML+JSでやっちゃうとか・・・。ネイティブ系にこだわるなら、多数のVS用のGUIのライブラリなどが存在しますので、
まずはいろいろ、調べてみるのがよいかと思います。
とはいうものの、成果物として、必要な物が決まっている場合には、おのずと選択肢は狭くなってくるかと思います。
特にGUI系のライブラリなどは、お試しできるものも、多いですので、豊富な機能(いきないWORDみたいなのが、できちゃうやつとか)をいろいろ、試されてみては?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.33%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/05/03 17:50
実はもともとはC#を使っていたのですが、動画を扱うために、処理速度の関係でC++に切り替えました。
GUIに関してはできればC#を使いたいとも思っています。
1つご質問なのですが、例えばC++を使って取得したデータをC#で作ったGUIアプリで表示(できればリアルタイムで)することは可能でしょうか?
それができれば一番やりやすいので、お聞きしたいです。
申し訳ございませんが、よろしくお願いいたします。
2016/05/03 17:58
C++で画像ファイルを生成し、C#側でその一部や全部を拡大縮小して表示するイメージです。
たぶん、圧縮/解凍なしなら、動画にも対応できる性能は出せていたと思います。主にC++側はかなり高速化の工夫を行いました。C#側もある程度は工夫してます。
2016/05/03 18:37
覚えることがたくさんあってしんどいですけど。
2016/05/03 19:27
C++/CLIのC++部分はC++そのものなので、通常のC++のコードはそのまま書けますし、他で作ったC++のライブラリ(DLL/スタティックどちらも)をリンクして使うこともできます。私もちょっとした画像処理のプログラムを、GUI部分はC#で作り、画像処理部分はC++/CLIを介してC++(スタティックリンク)で作ったことがあります。
> 例えばC++を使って取得したデータをC#で作ったGUIアプリで表示(できればリアルタイムで)することは可能でしょうか?
コントロールのウィンドウハンドルを通してC++側で描画できます。GetDCして直接描画することもできますし、ウィンドウプロシージャをC++で作った自前の関数に置き換えてC++側でWM_PAINTなどを処理するということもできます。あるいは、描画対象のコントロールに子ウィンドウとして自前のウィンドウをかぶせてそこに描画するという方法もあります。
ただし、いずれにしてもWindowsのウィンドウ関連のAPIの使い方を覚える必要はあります。
2016/05/03 21:14
皆さんGUI部分をC#で、処理部分をC++で行った経験があるということですので、僕も皆さんのコメントを参考にして作成したいと思います。
難しそうですが、頑張ります。
ご回答ありがとうございました!