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

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

ただいまの
回答率

90.47%

  • C++

    3625questions

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

  • Visual Studio

    1922questions

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

  • Visual Studio 2013

    309questions

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

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

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 4,775

TOC

score 13

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/03 17:50

    ご返信ありがとうございます。

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

    キャンセル

  • 2016/05/03 17:58

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

    キャンセル

  • 2016/05/03 18:37

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

    キャンセル

  • 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++で行った経験があるということですので、僕も皆さんのコメントを参考にして作成したいと思います。
    難しそうですが、頑張ります。
    ご回答ありがとうございました!

    キャンセル

0

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/03 21:18

    ご回答ありがとうございます。

    自分としてはGUI部分はC#が作りやすいので、そちらで行ってみようと思います。

    C++を用いたGUIアプリの作成法がまだたくさんあるんですね!
    非常に参考になりました。
    提案していただいた方法も勉強しようと思います。
    ありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C++

    3625questions

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

  • Visual Studio

    1922questions

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

  • Visual Studio 2013

    309questions

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