BorlandC++5.5を使おう!
フリーでWindowsアプリケーションも作れるコンパイラを使いましょう。
BorlandC++5.5とはWindows専用のコンパイラなのでWindows上で使います。
作成できるプログラムもWindows専用です。
主に2種類があります。
・コンソールアプリケーション DOS窓(コマンドプロンプト、コンソールともいう)で文字だけ表示する。C/C++の学習用に最適。
・Windowsアプリケーション 普通のアプリケーション。グラフィックも使える。DirectXも可能。
1.セットアップ
まずコンパイラ本体をダウンロードします。
ダウンロードしたfreecommandlinetools2.exeを実行します。
インストール先をデフォルトのCドライブとします。

フリーのBorlandCはコマンドラインのみなのでコマンドの打ち込みが面倒です。
そこでこれを支援するツールBCC Developerを使いましょう。
起動するとコンパイラの位置を聞いてくるので次のようにします。

2.プログラム作成
VCにしてもBCCにしてもプロジェクトの概念があります。
大きなプログラムになると複数のソース(.cや.cpp)とリソース(ビットマップやダイアログなど)を統合してメイクして実行形式の
EXEを作成します。
それを管理するのがプロジェクトです。
まずファイルから新規作成を選びます。
(ディレクトリ名は好きな位置で)

プロジェクトを作成したら、プログラムを入力するソースファイルを作成しなければなりません。
またファイルから新規作成を選んで次のようにします。

ここで何かプログラムを打ち込んでみましょう。
入力が終わったらプロジェクトのメイクを選びます。
間違いがなければMake Endと表示されます。

もし間違いがあるとどこに間違いがあるか表示されますので、それにしたがって修正しましょう。

で、実行すると次のようにDOS窓で表示されます。

3.Windowsアプリケーション
簡単なプログラムを実行してみよう。
簡単といってもちょっとウィンドウ開いて文字表示してグラフィックを描くのに結構長いですが・・。
はじめは分からないことばかりでしょうが、一つ一つ解決していきましょう。
またプロジェクトを作ります。
プロジェクト名をTestWin
ソースファイルをtest.cpp
とします。
ここで以下のプログラムを入力するのですが、メイクするまえに設定しないといけません。
プロジェクトの設定でターゲットをコンソールからWindowsアプリケーションに変更します。

ソース
#include <windows.h>
void View(HDC hdc)
{
int x,y,c;
for(y=0;y<256;y++){
for(x=0;x<256;x++){
c=RGB(x,y,255);
SetPixelV(hdc,x,y,c);
}
}
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
char szHello[100]="hello!";
switch( message )
{
case WM_PAINT://描画
hdc = BeginPaint (hWnd, &ps);
View(hdc);
RECT rt;
GetClientRect( hWnd, &rt );
DrawText( hdc, szHello, strlen(szHello), &rt, DT_CENTER );
EndPaint( hWnd, &ps );
break;
case WM_DESTROY://終了
PostQuitMessage( 0 );
break;
default:
return DefWindowProc( hWnd, message, wParam, lParam );
}
return 0;
}
BOOL InitInstance( HINSTANCE hInstance, int nCmdShow )
{
HWND hWnd;
WNDCLASSEX wcex;
ZeroMemory(&wcex,sizeof(WNDCLASSEX));
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.hInstance = hInstance;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//背景の色
wcex.lpszClassName = "test";
RegisterClassEx( &wcex );//ウィンドウ情報登録
//ウィンドウ作成
hWnd = CreateWindow("test", "test", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if( !hWnd )
{
return FALSE;//ウィンドウ作成失敗
}
ShowWindow( hWnd, nCmdShow );//ウィンドウ表示
UpdateWindow( hWnd );
return TRUE;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
//Windowsアプリはここから実行が始まる。
MSG msg;
// アプリケーションの初期化を行います:
if( !InitInstance( hInstance, nCmdShow ) )
{
return FALSE;
}
// メイン メッセージ ループ:
while( GetMessage(&msg, NULL, 0, 0) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return msg.wParam;
}
|
実行結果
