フリープログラミング for windows.

Visual C++ Express EditionでFOX-Toolkitを使ってみる

Visual C++ Express Editionでネイティブアプリケーションを作成する際、Windows Platform SDKと共に利用します。 但し、MFCが利用できないため、GUIを作成するには Win32API を直接利用するか、または他のGUIライブラリを利用することが考えられます。 ここでは、GUIライブラリとしてFOX-Toolkitを利用してみます。

FOX-Toolkitのインストール

FOX-Toolkitの入手

FOX-Toolkit のホームページダウンロードページから Windows 95/98/ME/NT/2K/XP 用のFOX-Toolkitをダウンロードします。 ここでは STABLE である fox-1.6.20.zip をダウンロードします。

解凍

ダウンロードした fox-1.6.20.zip はZIP形式の圧縮ファイルですので、 それを適当なフォルダに解凍します。 ここでは、D:\fox-1.6.20 に解凍します。

ライブラリの作成

Visual C++ Express Edition 上でのビルド

fox-1.6.20.zip にはライブラリは含まれていませんので、ソースからコンパイルする必要があります。 コンパイルしてライブラリを作成する必要があります。 FOX-Toolkitには各コンパイラにあわせたビルド環境が用意されていますので、 Visual C++ Express Edition (+ Windows Platform SDK)を利用してビルドします。

Visual C++ Express Edition を起動します。

[ファイル]-[開く]-[プロジェクト/ソリューション]を選択します。

展開したフォルダの windows\vcpp\win32.dsw を 開きます。

以下のようなダイアログが表示されますが、[すべてはい]をクリックします。

プロジェクト作成(VC++)1

右のソリューションエクスプローラに ソリューション'win32'(37プロジェクト)が表示されます。

プロジェクト作成(VC++)2

 

ソリューション'win32'(37プロジェクト)をクリックし win32 ソリューションのプロパティを表示します。

ソリューションのプロパティ

 

スタートアッププロジェクトがadieになっており、デフォルトではアクティブ構成が Debug|Win32 となっています。 アクティブ構成を変更することにより、必要なライブラリ構成を選択します。

このまま、ビルドした場合、以下のようなコンパイルエラーとなり、後続のビルドが失敗します。

... vsscanf.cpp(403) : error C3861: 'vfscanf': 識別子が見つかりませんでした

これは、Visual C++ Express + Platform SDK ではvfscanf()が存在しないためだと思います。 エラーのあったソースを見ると以下のようになっています。

#if !defined(_MSC_VER) || (_MSC_VER < 1400)
int vfscanf(FILE *stream,const char *format,va_list arg_ptr){
  arg_scanf farg={(void*)stream,(int(*)(void*))fgetc,(int(*)(int,void*))ungetc};
  return __v_scanf(&farg,format,arg_ptr);
  }
#endif

// API
int vscanf(const char *format,va_list arg_ptr){
  return vfscanf(stdin,format,arg_ptr);
  }

_MSC_VER < 1400 ではvfscanfが定義されるが、_MSC_VER が 1400 以上であれば定義されません。 Visual C++ 2005 Express Edition は _MSC_VER が 1400 なので、vfscanfが定義されないことになります。 これは、Visual C++ 2005 Express Edition でネイティブコンパイルを Platform SDK で行う場合に、Platform SDK にはvfscanfが含まれていないためと考えます。 (Standard Edition以上でネイティブコンパイルする場合は問題は発生しないはずです)

対処としてはソースを修正するかvfscanfを実装するか_MSC_VERを 1400 未満に設定するかが考えられます。

ソースを修正することは避けたいので、ここでは_MSC_VERを無理やり 1400 未満に設定することとします。

本コンパイルをしている箇所は fox プロジェクトと foxdll プロジェクトであるので、 ソリューションエクスプローラから fox プロジェクトを右クリックで選択し、「プロパティ」を表示します。

[構成プロパティ]-[C/C++]-[プリプロセッサ]を選択し、[プリプロセッサ定義]で "_MSC_VER=1300" を追加します。 プロパティページ

同様に foxdll プロジェクトについても設定します。 本設定は構成毎にする必要がありますので、[Debug|Win32]と[Release|Win32]に設定します。

また、サンプルのプロジェクトである adie がリンクでエラーになります。DLLを利用する設定になっており、エラーになっていしまいました。 ライブラリ自体の作成に影響はありませんので、気にならなければ無視してください。 スタティックリンクの設定にすれば、問題なくコンパイルできます。

スタティックリンクの設定にするには、 [構成プロパティ]-[C/C++]-[プリプロセッサ]を選択し、[プリプロセッサ定義]で "FOXDLL" を削除します。 また、右ペインの adie プロジェクトのプロパティで、プロジェクトの依存関係がfoxdllになっていますので、foxにします。

プロパティページプロパティページ

では、ビルドを行います。 ソリューション'win32'(37プロジェクト)を右クリックで[ソリューションのビルド]を選択するとビルドが開始されます。 警告は出力されますが、数分後に以下のように完了します。

ビルド結果

[Debug|Win32]の構成のスタティックライブラリが作成されました。 必要に応じてアクティブ構成を[Release|Win32] に変更して上記の[ソリューションのビルド]を実行します。 ライブラリはそれぞれ別名で作成されますので予め作成しておけばよいです。 作成したライブラリはインストールフォルダのlibに作成されます。

Foxアプリケーションの作成

プロジェクトの作成

では、Visual C++ Express Edition で FOX-Toolkit を使用した簡単なアプリケーションを作成してみましょう。

[ファイル]-[新規作成]-[プロジェクト]から[新しいプロジェクト]ウインドウを表示します。

プロジェクトの種類ツリーから[Visual C++]-[Win32] をクリックします。

Visual Studio にインストールされたテンプレートより[Win32 コンソール アプリケーション] をクリックし、 プロジェクト名に名前を入力し、[OK]ボタンをクリックします。

[Win32 アプリケーション ウィザード]ウインドウが表示されます。

Win32 アプリケーション ウィザード1

[次へ>]をクリックします。

Win32 アプリケーション ウィザード2

アプリケーションの種類に[Windows アプリケーション]を選択し、 追加オプションに[空のプロジェクト]をチェックし、[完了]をクリックします。

プロジェクトが生成されます。

 

ソースの作成

ソースファイルを右クリックで[追加]-[新しい項目]を選択し、 新しい項目の追加ウインドウで[C++ファイル(cpp)]を選択し、ファイル名を入力し、[追加]をクリックします。

新しい項目の追加

エディタで以下のように FOX-Toolkitを利用してウインドウを表示するコードを記述し、保存します。

#include "fx.h"

int main(int argc,char **argv)
{
	FXApp application("ApplicationName","VendorName"); 
	application.init(argc, argv);
	FXMainWindow* main = new FXMainWindow(&application, "FoxSample",
	                                      NULL, NULL, DECOR_ALL,
	                                      0, 0,
	                                      600, 400);
	application.create();
	main->show(PLACEMENT_SCREEN);
	return application.run();
}

ここではコード内容の説明については記載しません。

プロジェクトの設定

FOX-Toolkit のインクルードファイルやライブラリを参照するように設定します。

ソリューションエクスプローラのプロジェクトを右クリックし[プロパティ]を選択します。

[構成プロパティ]-[C/C++]-[全般]をクリックします。 追加のインクルードディレクトリに展開ディレクトリ下のincludeを追加します。

プロジェクトの設定2

[構成プロパティ]-[リンカ]-[全般]をクリックします。 追加のライブラリディレクトリに展開ディレクトリ下のlibを追加します。

プロジェクトの設定3

[構成プロパティ]-[リンカ]-[入力]をクリックします。 追加の依存ファイルに[foxd-1.6.lib]を追加します。

Debugビルドしたスタティックライブラリはfoxd-1.6.lib、 Releaseビルドしたスタティックライブラリはfox-1.6.libとなっています。

プロジェクトの設定4

[構成プロパティ]-[リンカ]-[詳細]をクリックします。 エントリポイントに mainCRTStartup を入力します。

これは、エントリポイントをWinMain()の代わりにmain()を使うことをリンカに指示します。

プロジェクトの設定4

[OK]をクリックします。

ビルドと実行

ソリューションをビルドし、デバック開始で実行すると以下のようなウインドウが表示されます。

サンプルアプリケーション

ソフトウエア製品

やっぱり、製品版でないとなにかと不自由な面も多いのは確かです。Windowsプログラミングするなら...

■ Visual Studio 2008

検出率、アップデート頻度、軽さ等、好評のセキュリティソフト...

■ カスペルスキー

格安レンタルサーバ

月額1000円以下で利用できるレンタルサーバです。

■ ロリポップ!
■ チカッパ!
■ さくらインターネット
■ TOK2 PROFESSIONAL
■ Bfit.jp

ネットバンク

金利の高さと、手数料の安さからネットバンクはたいへんお得です。

■ ジャパンネット銀行
■ イーバンク銀行

アフィリエイト

ブログ、ホームページを持っているなら、アフィリエイトで広告収入を得られます。

■ A8.net
■ リンクシェア
■ JANet

パソコン・周辺機器

インターネットだけのサービスやアウトレット、思わぬ掘り出し物があるので、こまめにチェックしたいものです。

メーカ直販系
□ パソコン本体
■ デルオンラインストア
■ エプソンダイレクト
■ ソニースタイル
■ Apple Store
■ 富士通直販サイト WEB MART
■ NEC「得選街」
■ レノボ・ジャパン株式会社
■ マウスコンピューター
□ 周辺機器
■ ioPLAZA
ショップ系
■ ジョーシン
■ パソコン専門店PCDEPOT WEB本店


Apple Store(Japan)
Copyright(C) 2005 freepg-lab. All rights reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送