2005年09月29日 木曜日

Windows Programming in C++

流れが速すぎて、あんまりまじめに勉強したくないんだけれど、C++によるWindowsプログラミングを10年ぶりくらいに再開してみました。とはいえ、今のところはDLLが書ければよいかと言うレベル。DLLを書くのも結構かったるい。(忘れてしまった自分も悪い。)
ついでなのでGUIを持ったプログラムを書けるようにもなりたいと思いたった訳だけれど、周りの環境を調べてみてどう攻めていこうか考えてみる。学習曲線はC++の場合そんなに急ではないので、年単位で時間ががかることを前提に考えることとすると、Windowsに限定して考えれば現在身の回りで.netを使える環境は自宅のPCだけという惨憺たる状態。とてもツールとして使って貰うようなプログラムを.netで書ける状態にない。と言うことで、Win32環境でオーソドックスにC++で攻めるのも悪くはあるまいと思ったわけだ。
MFCはずいぶん前に挫折した痛い経験があるので、それ以外のフレームワークを探してみる。Doc-Viewというスタイルは感銘はするが、常にDoc-Viewを必要としているわけでもないので、今回はこれを迂回してATL(Active Template Library)/WTL(Windows Template Library)で遊んでみようと思う。すっかり廃れてしまった感のあるATLなんですが、ATLだけでGUIなプログラムはかけなかったなと言う記憶があって敬遠していたが、ATLを補うGUIテンプレートライブラリがWTL(Windows Template Library)として、いまやMSのオープンソース戦略の一環として配布されているので、これでいいのかもと思っています。(ATLはそうではないので困ったなあと言う問題はあるのだけど。) MFCと比べると、Doc-Viewを強要されない(ViewはあってもDocはない)、ヘッダだけで構成されている(templateだから当たり前か) 喞ぢでプログラムを書いていた時代を知っていれば何とかプログラムが追える、というようなもので、何とか遊べそう。後はなんと言っても、_多重継承とtemplateを使いまくり!_というC++フリーク向けのライブラリであったりもするので、サンプルのソースを読んでいても楽しい。ぼちぼち勉強してみよう。参考となりそうなサイトをメモ。

  • Windows Template Library
  • ATLリファレンス(MSDN)
  • WTL研究所
  • WTL/ATL
    ちなみに古の時代に滅んでしまったかに思ったBorlandのライブラリObject Windows Library(OWL)もパッチのプロジェクトから派生してオープンソースとして復活してます。OWLにパッチを当てると、Borland C++だけではなくVisual C++でもMinGWでもコンパイルできるのはたしかにすごいかもしれない… このコンパイラポータビリティはいったいなんだろう・・・ (ただこっちは日本語のドキュメントが失われているので手のつけようが・・・ 誰か持っている人いないんだろうか。眠らせているくらいなら是非欲しいのだけど。Borlandの公式の日本語ドキュメントは無くても良いと言うくらい貧弱なものだしなあ。)