質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

3回答

14952閲覧

Visual C++でのGUIアプリ作成

TOC

総合スコア21

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

1クリップ

投稿2016/05/03 07:01

お世話になっております。
現在、Visual C++を使ってアプリケーションの開発を行っております。
開発当初はGUIアプリを作成する予定ではなかったのですが、途中からGUIを使ってユーザーが操作できるようにしたいと考えました。
このとき、GUIの画面をアプリに追加したいと思い、自分で調べたところ次のような方法があると思うのですが、どちらがよろしい(初心者でもやりやすい)でしょうか。

1.Qtを用いてGUIを作成
2.Windowsフォームアプリケーションを用いてGUIを作成

また上記以外の方法でもGUIを作成できる方法があれば教えていただきたいです。
わかりづらい質問内容かもしれないので、補足情報が必要な場合はご指摘お願いいたします。
お手数ですが、何卒宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

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が開発してます。

投稿2016/05/03 08:37

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TOC

2016/05/03 08:50

ご返信ありがとうございます。 実はもともとはC#を使っていたのですが、動画を扱うために、処理速度の関係でC++に切り替えました。 GUIに関してはできればC#を使いたいとも思っています。 1つご質問なのですが、例えばC++を使って取得したデータをC#で作ったGUIアプリで表示(できればリアルタイムで)することは可能でしょうか? それができれば一番やりやすいので、お聞きしたいです。 申し訳ございませんが、よろしくお願いいたします。
Chironian

2016/05/03 08:58

以前似たことをやったことが有ります。その時、C#とC++は別exeでpipeでタイミングを通知し、画像ファイルにて画像をやり取りしてました。 C++で画像ファイルを生成し、C#側でその一部や全部を拡大縮小して表示するイメージです。 たぶん、圧縮/解凍なしなら、動画にも対応できる性能は出せていたと思います。主にC++側はかなり高速化の工夫を行いました。C#側もある程度は工夫してます。
episteme

2016/05/03 09:37

僕はC++にデータ処理/C#にGUIを受け持たせ、両者の仲介役にC++/CLIを使ってます。 覚えることがたくさんあってしんどいですけど。
catsforepaw

2016/05/03 10:27

横から失礼します。 C++/CLIのC++部分はC++そのものなので、通常のC++のコードはそのまま書けますし、他で作ったC++のライブラリ(DLL/スタティックどちらも)をリンクして使うこともできます。私もちょっとした画像処理のプログラムを、GUI部分はC#で作り、画像処理部分はC++/CLIを介してC++(スタティックリンク)で作ったことがあります。 > 例えばC++を使って取得したデータをC#で作ったGUIアプリで表示(できればリアルタイムで)することは可能でしょうか? コントロールのウィンドウハンドルを通してC++側で描画できます。GetDCして直接描画することもできますし、ウィンドウプロシージャをC++で作った自前の関数に置き換えてC++側でWM_PAINTなどを処理するということもできます。あるいは、描画対象のコントロールに子ウィンドウとして自前のウィンドウをかぶせてそこに描画するという方法もあります。 ただし、いずれにしてもWindowsのウィンドウ関連のAPIの使い方を覚える必要はあります。
TOC

2016/05/03 12:14

ご回答ありがとうございます。 皆さんGUI部分をC#で、処理部分をC++で行った経験があるということですので、僕も皆さんのコメントを参考にして作成したいと思います。 難しそうですが、頑張ります。 ご回答ありがとうございました!
guest

0

どちらが、という所ですと、
・どちらが、ご本人として、とっつきやすいか
・最終目標とするGUIが作れるかどうか
の2点となるのではないでしょうか。

さて、他にもGDIでがりがり書く方法もあれば、IEコンポーネントを貼り付けて、全部HTML+JSでやっちゃうとか・・・。ネイティブ系にこだわるなら、多数のVS用のGUIのライブラリなどが存在しますので、
まずはいろいろ、調べてみるのがよいかと思います。

とはいうものの、成果物として、必要な物が決まっている場合には、おのずと選択肢は狭くなってくるかと思います。

特にGUI系のライブラリなどは、お試しできるものも、多いですので、豊富な機能(いきないWORDみたいなのが、できちゃうやつとか)をいろいろ、試されてみては?

投稿2016/05/03 07:29

ItoTomonori

総合スコア1283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TOC

2016/05/03 12:18

ご回答ありがとうございます。 自分としてはGUI部分はC#が作りやすいので、そちらで行ってみようと思います。 C++を用いたGUIアプリの作成法がまだたくさんあるんですね! 非常に参考になりました。 提案していただいた方法も勉強しようと思います。 ありがとうございました。
guest

0

C++でコアな機能のdllを作り、GUIはC#で作り、C#で作ったGUIからC++で作ったdllの関数を呼び出すのが一番簡単です。

投稿2021/07/28 19:59

qqfsdfsafd

総合スコア599

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qqfsdfsafd

2021/07/28 20:00

Microsoftは既にC++でのGUI開発を捨てています。
qqfsdfsafd

2021/07/28 20:01

C#は未経験でもC++の経験があればマニュアル車からオートマ車に乗り換えるくらい簡単です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問