NikaLog

プログラムと音楽と、時々デザイン。

MFCを利用する

Windows Driver Kit(http://www.microsoft.com/japan/whdc/devtools/wdk/wdkpkg.mspx)という、Windows用のドライバを作成するSDKの中に、MFCというWindowsアプリケーションを作るためのライブラリが含まれています。これを利用したアプリケーションは配布可能とのことで、早速、MFCを使ったアプリケーションのサンプルを作成してみます。

WDKに含まれているMFCやATLでビルドしたバイナリは配布可能らしい
http://d.hatena.ne.jp/sea-show/20100517/1274104239

とりあえず、VC++ Expressを起動し、Win32アプリケーションを作成します。アプリケーションの種類はWindowsアプリケーション、追加のオプションは空のプロジェクトを選択します。


そして、cppファイルを追加。


サンプルコードは「猫でもわかるプログラミング」さんのMFC編第1章のソースコードをコピペします。
http://homepage2.nifty.com/c_lang/mfc/mfc_01.htm

そして、ヘッダファイルがあるディレクトリを追加。場所は、WDKをインストールしたディレクトリの下にある、(バージョン番号)\inc\mfc42 です。incの下にはMFC以外にも、ATLなどのヘッダファイルがあります。ATLを使ったプログラムは後日紹介いたします。

ライブラリのディレクトリも指定…、ただ、入力するlibファイルは今回指定しないので、この作業は必要ないのかも。後で調べます…。(バージョン番号)\lib\Mfc\i386を選んでおきます。Mfc以下にはアーキテクチャ別にディレクトリがありますが、今回は一般的なx86CPU用のライブラリを使用すると仮定して、i386を選んでいます。

文字セットは「マルチバイト文字セットを使用する」、また、MFCの使用は「共有DLLでMFCを使う」を選択してください。これは、Microsoftのサポートページ(http://support.microsoft.com/kb/243458/ja)に詳しい理由が書かれています。

さて、うまくビルドは通ったでしょうか。ビルドが通ると、exeファイルが作成されますが、実行しても次のようなエラーが出る場合があります。

これは必要なライブラリがそろっていないためで、WDKだけでは足りないドライバは、「Visual Basic 6.0、Visual C++ 6.0、および Visual SourceSafe 6.0d を対象とする Service Pack 6」(http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=A8494EDB-2E89-4676-A16A-5C5477CB9713&displaylang=ja)のダウンロードページから、必要なファイルを取り出すこととします。

上記ファイルを展開すると、cabファイルがいくつか展開されます。そのcabファイルにはさまざまなライブラリ、ヘッダファイルが含まれています。今回のプログラムではmfc42d.dllとmsvcrtd.dllが必要です。mfc42d.dllはVS6sp64.cabに、msvcrtd.dllはVS6sp61.cabに含まれているので、抽出し、とりあえずexeファイルと同じディレクトリに保存してください。これで準備が整いました。

実行すると、次のようなウィンドウが開きます。

MFCを利用すると、Win32APIを叩くよりシンプルなコードでウィンドウを作成することが出来ます。


ただし、WDKに含まれているMFCのバージョンは6相当であり、今から15年ほど前のものです。現バージョンのMFCのバージョンは10であるため、本格的にMFCを利用することを考えるのであれば、製品版を購入したほうが良いです。

とりあえず、MFCがどんなものか触ってみるということで、先ほど挙げた「猫でもわかるプログラミング」さんのページのサンプルや、その他MFCのサンプルをビルドしてみると面白いかもしれません。