VC2015デスクトップアプリを作りたい

このQ&Aのポイント
  • Visual Studio 2015を利用してデスクトップアプリを作りたい場合の新規作成の指定方法がわからない。
  • Win7での実行環境で大量のCSVを読み込むデスクトップアプリケーションを作成したい。
  • VS2015の新規作成画面で27種類のテンプレートがあり、デスクトップアプリケーションのテンプレートを見つける方法がわからない。
回答を見る
  • ベストアンサー

VC2015 デスクトップアプリを作りたい

Visual Studio 2015をインストールしました。(Win10マシン) C++での「新規作成」の指定が分かりません。 デスクトップアプリケーションを作ろうと思っています。(大量のCSVを読み込むようなもの)実行環境はWin7です。 VS2015を起動し、「新規作成」「プロジェクト」「テンプレート」「Visual C++」「Windows」と開きました。 この中に27種くらいのテンプレートがあるのですが、どれがデスクトップアプリケーション用のテンプレートなのか良く分かりません。 どれを選択した良いかご指導ください。 ちなみに、BCBのように、フォームにコントロールを貼り付けて開発するイメージでいます。

  • CLMN
  • お礼率80% (62/77)

質問者が選んだベストアンサー

  • ベストアンサー
  • catpow
  • ベストアンサー率24% (620/2527)
回答No.1

>>デスクトップアプリケーションを作ろうと思っています。(大量のCSVを読み込むようなもの)実行環境はWin7です。 デスクトップのアプリを作りたいのであれば、言語選定を間違っていますよ。 Visual Studioの主力言語は、C#で、2番手がVB.NETです。 言語としてC++を選ぶのは、すでにC++で作られた過去アプリのメンテ用か、ハードやOSに近い部分の処理を行うとか、特別にスピードが要請される時です。 感覚的には、Cが使えるのに、アセンブラを使っているような感じですね。 手軽さ、開発しやすさを考えたら、C#にすべきです。 (マイクロソフトもこんな考え方をしているようです) ちなみに、CSVを読み込むような処理は、"CSVHelper"というパッケージがNuGetから取得できます。 これを使うと、とても簡単にCSV処理を作ることができます。 とはいえ、BCBの経験のみで、初めてVC2015を使ってC#で開発するとなると、いろいろと勉強することが多いのは確かです・・・。 ちなみに、Visual StudioでのC++は、ちょっと前から、C++からC++/CLIに変わりました。 言語的にかなり大きな変更がされています。 私がC++/CLIを使ったプロジェクトでは、画面まわりはすべてC#で、通信まわりとか、過去のソースとのしがらみが大きい部分のみC++/CLIでしたね。 なおC++でデスクトップアプリを作るなら、Visual C++ ->全般->空のプロジェクトとか、MFC、ATL、CLRなど、色々と好きなのを選べると思います。どれがいいか、調査されて、選ばれればいいと思います。 (C#なら、とりあえずは、Visual C# -> Windows フォームアプリケーションでOK。簡単にフォームアプリが作れます) なにせ、デスクトップアプリをゼロからVS&C++で作ったことないので、・・・・。

CLMN
質問者

お礼

catpowさん、回答ありがとうございました。 Windowsの比較的簡単なアプリケーションを作成するのに、C++がその座を降りてしまった、ということで、ややショックを受けています。 確かにC#などの話題が多くなって来ているとは承知していましたが・・。 私のアプリケーション作成の目的は、自分の職場での利用です。 業務パッケージからエクスポートしたCSVなどテキストファイルを読み込んで何らかの処理をする。 あるいは業務パッケージにインポートするファイルをC++で作る、といった利用形態です。 残念ながら、C#やVBが生産性が良い、と言われても今更切り替えるのはしんどいことです。 私は今までBorlandを使ってきましたが、手持ちのコンパイラが古くなったので、今後のことを考えるとマイクロソフトに移行した方が良いかな、と思い、今回の質問になった訳です。 (以前、VS2008をチラッと見たとき、BCBと同じような感覚で出来そうだ、と思ったことがありました) マイクロソフトのC++開発環境が、新規アプリケーションを作成するには適さないような方向に向かっているのなら、やはりこのままBorlandでやっていこうか、とも思います。 もう少し、VC++での開発について検討してみて結論は出すことにします。

その他の回答 (4)

  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.5

>あくまでも私個人としてこの開発環境を導入するものであり、出来上がったアプリケーションを一担当者として使うものです。 個人的判断ではなく会社の担当部署に確認された方がよろしいかと。 私的な時間に私的なアプリケーションとして開発して業務で使用するというのでしたらライセンスの問題はないでしょうけど(会社として私的アプリケーションを使用して良いかどうかという問題はあるとは思いますが) >だから余計に出来上がった実行ファイルも大きくなるのでしょうね。 MFCのスタティックライブラリとリンクしてるからですよ。

CLMN
質問者

お礼

wormholeさん、コメントありがとうございます。 >個人的判断ではなく会社の担当部署に確認された方がよろしいかと。 はい、私が自部門のためにプログラムを作っていることは、システム部が非公式に認めてくれています。 本当は「勝手なことはしないでくれ」と思っているかも知れませんが、各部門の要求に対応しきれないので、自前でやってくれるなら、それでも良し、と黙認してくれているようです。 私の係だけが使う(他部門に転用など出来ない)専用プログラムですから、システム部も優先順位を上げにくいのでしょう。 それでも、もし将来システム部のお世話になることがあるとするなら、マイクロソフトの開発環境にしておいた方が良いかもしれない、という思いもあり今回の質問になったのです。 ただ、C#でノウハウ積み上げる時間もないし、マイクロソフトはあきらめて、BCBを続ける方が良さそうな気になって来ています。 色々ありがとうございました。

  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.4

>先ず明示しなくてはいけなかったのですが、私がインストールしたのはVisual Studio Communityです。 五月蠅いかもしれませんが業務利用には条件がありますので、それは確認してください。 > 「MFC」は、プロジェクトのC++の中にありました。(Windowsの中にはありませんでした) >これを指定しアプリケーションの種類を設定すると、「Connected Services Packageは正しく読み込まれませんでした」というエラーが出ます。 >これがどの様な影響を与えるか分かりませんが、そのまま続行すると、このプロジェクトの初期設定が完了したように思えます。 プロジェクトのテンプレートの配置に関しては私の間違いだったようです。 Visual C++→MFC でした。 発生したエラーについてはわかりません。 >ただ、CPPソースが10個も並んでいます。恐らくこれはおかしい状態だと思います。 何をもって「おかしい状態」と判断されたのかはわかりませんが、プロジェクトのテンプレートから作った初期状態ならそれで正常です。 また起動したさいに「VC++の開発画面のようなフォームが起動されました。」というのもプロジェクトのテンプレートで作られるひな形のコードが、そのようなコードになっていたからです。 >この後、フォームの上に、ボタンやラベルなどのコントロールを配置したいのですが、ソリューションエクスプローラやプロパティの画面は出ていますが、フォームやコントロールの一覧は出ていません。 申し訳ありません。 MFCだと「BCBのように、フォームにコントロールを貼り付けて開発する」といったことはできなかったです。 またVisual Studio 2015のVisual C++プロジェクトテンプレートには「BCBのように~」なデスクトップアプリ向けのものはないようです。 C++/CLIでUniversal Windows Plathome向けでよければありますが(ただこれデスクトップアプリケーションといっていいのかどうか・・・) >取りあえず、これをこのままビルドする(スタティックライブラリ)と、10Mにもなる巨大な.exeファイルが出来上がります。 MFCのスタティックライブラリとリンクすれば、そのような巨大なexeになります。

CLMN
質問者

お礼

wormholeさん、本当にありがとうございます。 業務利用の制限については確認しました。 あくまでも私個人としてこの開発環境を導入するものであり、出来上がったアプリケーションを一担当者として使うものです。 従って問題ないと理解しています。 >何をもって「おかしい状態」と判断されたのか 私のイメージでは、真っ白な何もないフォームが表示される、ということでソースファイルは一つであろう、と考えたのです。 ファイルも使わなければTreeViewも使わない、SDKで言えばメッセージループだけのプログラム、そんなプログラムならソースファイルも一つだろう、という考えがあったのです。 でも、MFCではこんなに沢山のソースファイルが標準で組み込まれてしまうのですね。 だから余計に出来上がった実行ファイルも大きくなるのでしょうね。 ちょっと想像していたのと違っていました。 また、コントロールを貼り付け、それのイベントにソースを書き込む、というスタイルではない、ということで残念でした。 上にも書きましたが、VC++2008を見たときに同じように出来そうだ、と感じたので、思い込んでしまったのかも知れません。 私の思うような使い方が出来ないことは、お二人の方から指摘されましたので、VC++2015を使うことはあきらめようと思います。 お手数をかけてしまったことをお詫びするとともにお礼申し上げます。

  • catpow
  • ベストアンサー率24% (620/2527)
回答No.3

No.1です。 会社の業務利用だと、コンパイラを変えるのは良くても、言語を変えるのはなかなか大変でしょうね。 ちなみに、以前のプロジェクトでメンテ対応のソフトの中に、Visual StudioのC++で開発されたフォームアプリがありました。 画面は変更せず、ロジックのみの修正なので、私も「直感で、なんとか修正できるだろう」と思って始めたのですが、全然判らず、ネットで使い方を調べたり、足りないSDKを追加インストールしたりと、苦労した覚えがあります。 このC++の面倒さに比較すれば、C#のフォームアプリは楽ですよ。 たぶん、直感で触ってみて、フォーム上に、ラベルやボタン、テキストボックスを表示するアプリがBCBやDelphiと同じ感覚で、あっという間に作れると思います。 ただし、ボタンを押した後のイベント処理に記述するロジックは、やはりC#を知らないと、書けないでしょうね・・・。 なお、C#の生産性が良いのは、C#のどんどん改善される言語仕様や、マイクロソフト提供の膨大な.NET Frameworkの活用もそうですが、世界のプログラマが登録してくれたパッケージが使えることです。 これらはVisual Studioから呼び出すNuGetによって簡単に利用できるようになります。 ただし、「どこの誰が作ったのか知らないそんなネットで拾ったパッケージ(フレームワーク)なんか危なくて業務で使えるわけないだろう!!」という先輩や上司がいるかもしれません。 そうなると、C#の生産性はかなり阻害される気がします。 私は派遣プログラマで、いろんな会社を渡りあるいていますが、最近のプロジェクトは、「開発言語はC#。フレームワークには、何使ってもいいよ。」 という前提のものが続いています。 なので、NuGetから持ってきたパッケージを利用することで、すごく効率がアップしています。 とはいっても、いくら開発が楽になるからといっても、会社やプロジェクトの方針には逆らえませんからね。 それでは、がんばってください。

  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.2

C++でデスクトップアプリケーションということでしたら Visual C++→Windows→MFC→MFCアプリケーション になるかと思います。 またVisual C++のコンパイラはC++/CLIとしての機能はありますがコンパイラオプションに /clr を指定しないと機能しませんし、Win32アプリケーションやMFCアプリケーション等のプロジェクトでは意図的に指定しない限り /clr は指定されません(/clrが必要になるのは.NET Frameworkが絡んでくるときですし、.NET Frameworkを使って良いのでしたらC#やVB.NETを使う方がいいです)

CLMN
質問者

お礼

wormholeさん、ありがとうございました。 せっかくレスをいただいたのに、思うようになりませんでした。 先ず明示しなくてはいけなかったのですが、私がインストールしたのはVisual Studio Communityです。 「MFC」は、プロジェクトのC++の中にありました。(Windowsの中にはありませんでした) これを指定しアプリケーションの種類を設定すると、「Connected Services Packageは正しく読み込まれませんでした」というエラーが出ます。 これがどの様な影響を与えるか分かりませんが、そのまま続行すると、このプロジェクトの初期設定が完了したように思えます。 ただ、CPPソースが10個も並んでいます。恐らくこれはおかしい状態だと思います。 この後、フォームの上に、ボタンやラベルなどのコントロールを配置したいのですが、ソリューションエクスプローラやプロパティの画面は出ていますが、フォームやコントロールの一覧は出ていません。 取りあえず、これをこのままビルドする(スタティックライブラリ)と、10Mにもなる巨大な.exeファイルが出来上がります。 これを起動すると、真っ白で何もないフォームが表示される、と想像していたのですが、VC++の開発画面のようなフォームが起動されました。 結局、シロートの直感で操作してみようと思った自分がバカだったのですが、「取りあえずやってみよう」ということでは、まったく手が出ない、と言うことが分かりました。 フォームの上に、1個のボタンと1個のラベルを配置したい、という極めて初歩的なことさえ出来ませんでした。

関連するQ&A

  • Visual Studio 2008で新規プロジェクトでのCppファイ

    Visual Studio 2008で新規プロジェクトでのCppファイルが見当たりません! こんにちは。 Visual Studio 2008 Proffetionalを入れいます。 で問題なのですが、新規プロジェクトで立ち上げた際に 「新規作成」→「プロジェクト」→「Win32」→「Win32コンソールアプリケーション」 を選びアプリケーションの設定で (コンソールアプリケーション)、(空のプロジェクト)にチェックを入れOKを押しました。 ソールファイルに「追加」→「新しい項目」と押していくとC++ファイルの項目があるはずなのに見当たりません。(写真参照) どうしたらいいのでしょうか?ご回答よろしくお願いします。 PCスペック OS windows 7 Visual Studio Proffetional Edition visual Studio .net Fream work 3.5 SP1 VS2008を起動させたのは今回が初めてです インストール中エラーが起こることはありませんでした。

  • exeのショートカットをデスクトップに置きたい

    vb.net2012で、新規にアプリケーションを作成しました。 これのショートカットをデスクトップに置いて、 vb.net2012を立ち上げてなくてもフォームを呼び出せるようにしたいです。 かなり初歩的な事を聞いてると思います。 C:\Users\Documents\Visual Studio 2012\ の中には、 bin My Project obj があります。 ビルドしてデバックはすでに済んでいます。 exeのショートカットキーを作りたいので、exeファイルがどこにあるのか教えてください。 ご教授よろしくお願いします。

  • VC++2005での他のアプリ操作について

    VC++2005でWindowsフォームアプリケーション形式でプロジェクトを作成し、他の人が作成したWindow形式のtextboxやコンボボックスなどが存在するソフトを操作したいのですが、どなたかご教示いただけないでしょうか。 環境はOS:Windos vista 開発ソフト:Microsoft Visual Studio C++ 2005 です。 つい先日、同様の質問をし、 ”基本的にはFindWindow、EnumWindowとかでアプリケーションのトップウィンドウを探して、さらにEnumChildWindow、GetDlgItemとかでテキストボックスやコンボボックスを探して操作。 ボタンを押すのは、トップウィンドウに対してSendMessage(WM_COMMAND,~);とかでできるかと思います。” と教えていただいたのですがWindowsフォームアプリケーション形式では使えないような感じなのでどうすればいいのかわかりません。 大変困っています。よろしくお願い致します。

  • VS 2005 で新規作成で困っています。

    ファイル - 新しいプロジェクト 【新しいプロジェクト】 Visual Studio にインストールされているテンプレートの中から (Windows アプリケーション)を選択 プロジェクト名はそのままで(OK)をクリックすると フォームの左下に プロジェクト"プロジェクト名"の作成に失敗しました。 が表示され、新しいフォームが作成できません。 再インストールをしたりしていますが、全くうまくいきません。 誰か教えて頂けますでしょうか。宜しくお願い致します。

  • VCでバッチソフト

    勉強でWindowsで動くテキストを加工するツールを作成したいのですが、 一瞬黒い画面が現れるので、 Visual C++ → Win32 → Win32コンソールアプリケーション → コンソールアプリケーション → 空のプロジェクトではなく Visual C++ → Win32 → Win32コンソールアプリケーション → Windowsアプリケーション → 空のプロジェクトで合っていますよね。 int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd) を宣言するのですが、引数はどうやって渡すのですか? またお勧めのVCでC言語を勉強できる本があれば教えてください。

  • Visual Studio Pro 2015

    お世話になります。 Visual Studio Professional 2015 を購入して既定でインストールしました。 新規プロジェクトで Visual Basicのテンプレートにお決まりのようにあるはずの Windowsフォームがないのですが、どうしればテンプレートに表示されるようになるでしょうか? Visual Studio Professional 2012などで作成した既存のプロジェクトなどは2015で問題なく開けたので、新規プロジェクトでWindowsフォームが作成できないということはないと思うのですが・・・ Windows 10、Windws 8.1 などで既存インストール、カスタム全選択インストールの両方を試したのですがテンプレートにWindowsフォームの選択肢は表示されませんでした。 せっかく購入したのに、ものすごく焦っております。 Visual Basic のテンプレートにWindowsフォームを表示させる方法をご存じの方、何卒ご指導いただければと思います。 よろしくお願いいたします。

  • VC++で作成アプリをWinPEで動かしたい

    Microsoft Visual Studio 2012 を使っています。VC++ で作成したアプリケーションをVisual Studio のインストールされていないPC(例えばMacPC)で動かすために、Windows PE 3.1 を起動し、このOS上で VC++ で開発したアプリケーションを動かしたいのです。この場合、どうすればよいのでしょうか?

  • VC++6.0からVC++2010への移行

    マシンAの VC++6.0 から マシンBの VC++2010 へ移行し、Releaseモード でビルドした結果、正常動作しませんでした。 Releaseモード、Debugモード ではエラー、警告ともにありません。 ■ 6.0 と 2010 パラメータ ■ ・共有 DLL で MFC を使う ・マルチスレッド DLL ・警告レベル 3 ■マシンA環境■ ・Windows XP Professional 2002 Service Pack 2 ・.NET Framework 1.1 ・Visual Studio 6.0 Enterprise Edition ■マシンB環境■ ・Windows XP Professional 2002 Service Pack 3 ・.NET Framework 1.1 、2.0 、3.0 、3.5 、4.0 ・Visual Studio 2005 Professional Edition ・Visual Studio 2010 Professional Edition ・Visual C++ 2008 Redistributable 作業の経緯と致しましては、6.0 のプロジェクトを VS2008 でビルドし、 sln ファイルを生成しました。 その後、生成された sln ファイルをもとにVS2010でエラーと警告の解除作業をしました。 Debugモード で エラー、警告 がないことを確認し、Releaseモード でビルドした結果、現状に至っております。 マシンB環境で問題なく 6.0 プログラムが動作している(Debug、Releaseともに)ことから環境面に原因があると考えております。 どのような問題が考えられるのか、また、どのような調査を行うべきか、ご教示頂きたいです。 よろしくお願い致します。

  • Visual Studio 2005

    学校の課題を家でできるようにしたくて「Visual Studio 2005 Academic Edition」を買ったんですが、プロジェクトのテンプレートに学校で使っている「C/C++ コンソール アプリケーション」が見当たりません。もしかしてエディションを間違えたのかも?それとも2005になって名前が変わったのか? 学校では「Microsoft Visual Studio .NET 2003」を使っています。 よろしくお願いします。

  • VCで作成したDLLをBCBから呼び出す方法

    皆さん こんにちは。 VCで作成したCのAPIを実装したDLLをBCB6.0で作成したアプリケーションから呼び出そうとしています。 コンパイルは通るのですが、リンク時に以下のエラーメッセージが表示されてしまいます。   [リンカ エラー] 外部シンボル 'My Function' が未解決(C:\BCB\***.OBJ が参照) BCB6のフォームプロジェクトからDLLを利用するために、以下の手順を行いました。 (1)DLLをbcb用に変換する   implib -a aaa.lib aaa.dll (2)プロジェクトにaaa.libを追加 (3)aaa.dllをプロジェクトのフォルダに追加 (4)コードを以下のように実装しました    extern "C" __stdcall ulong SysInitialize(void);  //プロトタイプ宣言    ulong ulRetVal = SysInitialize(); //コード内での呼び出し この状態でコンパイルは通るのですがリンカでエラーが発生します      [リンカ エラー] 外部シンボル 'SysInitialize' が未解決(C:\BCB\TELIGEV\MAINDLG.OBJ が参照 他のサイトで調べたところ、C++特有の修飾子"@***"がついている場合に同じエラーが出るとのことだったので、dumpbin.exeを使ってDLL内の関数をダンプしたところ、関数名にはアンダースコアや@などは関数名についていないようです。 dumpbinの出力結果   1 1D 000065A0 SysInitialize このほか、自分なりに調べたところ、以下のサイトを見つけたのですが、英語力の弱さから解決策を見出すまでには至りませんでした。 Using Visual C++ DLLs with C++Builder http://bcbjournal.org/articles/vol4/0012/Using_Visual_C_DLLs_with_CBuilder.htm どなたか、ご助言いただけると助かります。 よろしくお願いします。

専門家に質問してみよう