聞きかじりめも

主にC++やメディア処理技術などに関して気付いたことを書いていきます.ここが俺のメモ帳だ!

C++/CLIでウィンドウを生成する方法(VS2013)

すでにネットの海に腐るほどあるTipsですが,自分用メモとして残します.画像サイズがまちまちなのはWordファイルからの移植だからだと思います.

ちなみに開発環境はVisual Studio 2013 Expressです.

 

1. 「新しいプロジェクト」で「空のプロジェクト」を選択する

なぜかって?stdfx.hがうざったくてしょうがないからさ!

f:id:Mzawa2:20150822140830p:plain:w320:h240

ちなみに間違って「Win32 プロジェクト」を選択してしまった時は,この後に出てくるウィザードで即完了を押さずに「追加のオプション」の「空のプロジェクト」オプションを追加すれば同じ状態になる.

2. 「ソースファイル」に「追加→新しい項目」で「Windows フォーム」を追加する

Visual C++ → UIの中に入ってる.

f:id:Mzawa2:20150822140843p:plain:w320:h240

Windowsフォームを追加するとCLRに変換しますうんたらかんたらと忠告が出る.OKを押してやると画像のようになる.このままでは起動できないので,ソースコードを追加したりプロパティに若干の変更を加えなくてはならない.

f:id:Mzawa2:20150822140849p:plain:w320:h240

3. フォーム起動用のメインソースを追加する

ここでは名前をmain.cppとした.

4. 次のソースコードをmain.cppに書く

#include "MyForm.h" //⇐ フォームデザインの名前
using namespace testWindowsUI;  //⇐ プロジェクト名
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
   Application::Run(gcnew MyForm()); //⇐ フォームデザインの名前
   return 0;
}

この状態だとなんか色々読み込まれてないので,これからプロパティを設定する.

5. プロパティを編集する

「プロジェクト」を右クリックするとプロパティウィンドウが開くので色々修正していく. デフォルトでは「共通言語ランタイムサポートを使用しない」になっているはずなので,まずは「全般→共通言語ランタイムサポート」を「共通言語ランタイムサポート(/clr)」に変更する. ※DebugとReleaseの両方でやっておくと後々便利(左上の「構成(C)」で変更可能).迷ったら「すべての構成」にしておこう.

f:id:Mzawa2:20150822140903p:plain:w320:h240

6. ビルドを確認する

この状態で一応ビルドして起動できる.成功すると MyForm という空のウィンドウと,その裏にコンソール画面が開いている状態になる.

f:id:Mzawa2:20150822140908p:plain:w320:h240

7. コンソール画面を消す

printf()デバッグができるので便利なコンソール画面.「やっぱ邪魔だよこれ!」ってなったらプロジェクトのプロパティから修正できる. リンカー→システム→サブシステム をWindows(/SUBSYSTEM:WINDOWS)に変更し, リンカー→詳細設定→エントリポイント にmainと書き込む.これが最初に呼び出される関数である.

f:id:Mzawa2:20150822140913p:plain:w320:h240 f:id:Mzawa2:20150822140917p:plain:w320:h240

この状態でビルドすると,ちゃんと後ろのコンソールが消えてくれる.

f:id:Mzawa2:20150822140924p:plain:w320:h240