バナー
ブログ::技術ネタ
Visual C++(.net)でWin32 APIやprintfなどを使う方法
2012年 1月 24日(火曜日) 20:10

こんにちは。久々にプログラムな話しを。

 

最近のVisual Studio(C++, C#, Basicなど)でWindowプログラムを作るときは、

.net frameworkでプログラム組むのが主流です。

 

.netは使いやすくて良いのですが、ちょっと独特なので、

普通のC/C++で書きたくなるときもあると思います。

 

Visual C++は、.netと普通のC/C++やwin32 APIも混在させてプログラムすることが出来るので、

その方法を書いてみます。

.net frameworkなプログラムの中で、printfなども普通に使えます。

ついでにコマンドウィンドウ(DOS窓)も出せます。

 

なお、VS2008で解説するので、2010等とは画面が違うかもしれないです。

 

 

まずは、プロジェクトを作成するために、
ファイル→新規作成→プロジェクト と進み、
下図のように
Windows フォームアプリケーションを選んでください。

 

vs01

 

 

 プロジェクトのプロパティで、

下図のように【共通言語ランタイムサポート/clr】を選択してください。

 

vs02

 

少し解説しますと、
デフォルトだと「/clr:pure」となっていて、.netなプログラムしか受け付けません。
「/clr」にすると.netなプログラムと普通のC/C++と混在させることが出来るようになります。

 

 

次に、printfの出力先をコマンドウィンドウにしたいので、次のように、コンソールを選択してください。

とりあえずこの状態でプログラムを実行させるとコマンドウィンドウが表示されるようになります。

 

vs03

 

 

 

 

printf等を使いたいので、
stdafx.hに
#include <stdio.h>
#include <stdlib.h>
を追記してください。

  

 

あとは、ボタンを押したらprintfさせるために、ボタン置いて、ダブルクリックして出来たコードに
以下のように書いてください。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
          printf("hello\n");
}


実行すると下図のようにコマンドウィンドウにprintfされます!

 

 

vs04

 

 

補足ですが、win32APIを使いたいときは、stdafx.hに

#include <windows.h>

などを書いていけば使えます。

 

 
ソースコードの表示
2009年 8月 01日(土曜日) 22:28

ソースコードの表示のプラグインを入れてみました。

CodeCitationを使わせて頂きました。

こんな感じで表示できるようになりました。

続きを読む...
 
Visual C++のプロジェクト win32, MFC, .NET
2009年 7月 22日(水曜日) 17:31

前回に続きVisual C++の小ネタをば。

 

VC++でプロジェクトを作るときに、win32かMFCか.NETかを選択する必要があります。

ちなみにMFCは無料版のExpressでは使用できません。有料のStandard版以上で使用可能です。

 

 

さて、これらの違いは歴史的に以下のようになります。

 

win32
windows用の基本的なライブラリであるwin32 APIを使ってプログラムを書く。
頑張ればwin32のみで何でも作ることが可能。
ただし、ウィンドウを操作するプログラムを書く場合、ソースコードの量が多くなるため、敬遠されがち。
win32 APIはC言語の関数が殆ど。


MFC
win32より、ウィンドウ等のプログラムを短いソースコードで作れる。
C++で記述。
ただし、昨今のオブジェクト指向系プログラム言語と比較すると、マイクロソフト独自の流儀が多く理解するのが大変。
Visual C++ 6.0の頃から使用している人ならそのまま使えるので良いが、今から覚える人は大変。


.NET (CLR)
MFCより、オブジェクト指向言語として洗練された言語。
CLRとも表記される。
Java言語などに近く、かなり分かりやすくなった。
数年前からコンパイラが無料で配布され、書籍も多く、資料も増えてきている。
C++のほか、C#, Basic等で対応。各言語による文法の違いはあるが、使い勝手は統一されている。
ただし、XPには最初から.NETが入っていないため、.NETプロジェクトで生成したexeを動作させるためには、.NETのインストールが必要。.NETの動作条件はXP SP2以上。


 

それぞれの使い分けとしては、いろいろ議論の分かれるところですが、私は以下のように使い分けています。

 

簡単にウィンドウ系プログラムを作りたい→.NET
.NETの入っていないPCで動くウィドウ系プログラムをつくりたい→MFC
コマンドベースのプログラムを作りたい→win32


また、前回の日記にも書きましたように、VC++は.NETのプロジェクトの中にwin32 APIの関数を混在させることもできます。


それでは今日はこの辺で。
次回は.NETの動作条件やバージョンについて書こうかなと思っています。

 
Visual C++がお勧め
2009年 7月 12日(日曜日) 14:27

マイクロソフトのVisual Studioがフリーで公開されていますが、
C++, C#, Basicのどの言語にしようか悩んでいる人も多いと思います。

 

私も導入するまでは凄く悩みました。

 

人それぞれですが、私のように他の仕事でC言語を使っているような人には、C++をお勧めします。

 

長所は
・.NETの機能はC#やBasicと同じく使える。
さらに
・普通のC/C++コンパイラとしても使える。
・.NETと普通のC/C++言語も混在して書ける。
・win32 API、DirectX、DLL等、昔のWindows用C++のプログラムがそのまま使える。
という点だと思います。
なお、MFCを使いたい場合はStandard版を購入すれば使えます。

 

ちょっとしたプログラムを作りたいときに、printf()とかfopen()とか使えるのが嬉しいです。
(unsafeとか警告されますが、無視してok)

 

ちなみに、.NETと普通のC/C++を混在させたい場合は、
プロジェクトを、CLR→Windowsフォームアプリケーションで作成。
そして、構成プロパティ→全般→共通言語ランタイムサポートを/clrにすればOk。
 

 

逆に短所は、
・.NETのC++用のプログラムの記述がややこしい。
・.NETのC++用のマニュアルが少ない。

という点です。

 

とはいえ文法はC#と似ている部分も多いので、慣れればC#のサンプルをC++に脳内変換することもできます。

 

なので私のように普通のC言語にちょっと慣れている人には、Visual C++がお勧めです。

 

では、また今度気が向いたらVC++について書いていこうと思っています。

次回は.NET, MFC, win32について説明しようと思ってます。

今日はこの辺で。