だいぶ前に買って放置していた『プログラミングWindows95』と『MFCによるWindows95プログラミング』をようやく読み切った。2冊合計で2272ページ。

Progwin95andfMFC.JPG

プログラミングWindows95はWindowsプログラミングの最良の書のひとつであるペゾルド本の第4版。『プログラミングWINDOWS3.1』を学生の時に読んでいたのであまり読む気が起きなかった。Win32SDKの開発手法についてはだいたい知ってるし、そのまま写経してもつまらないので、当時の最新鋭Win95+VC4用サンプルを現在最新のWin10 x64+Visual Studio 2017で動かしてみるという明らかにマゾっぽいコースにチャレンジ。定評のある読みやすい本が地獄と化す。

何に苦しむことになるか。

・文字コードが異なる
内部の文字コードがWin95ではMBCS、WinNT系ではUnicodeと異なっていてWin32 SDK自体は一応マクロで切り替わるようになっているが、それを利用するコードや環境もその辺を意識しておく必要がある。基本的にはcharがWCHAR、char*がPWSTRになる。文字化けだけならまだましな方で、string.hで宣言されてるstrcpy系がドはまり。本文中ではstrcpyだけどUnicodeはwcscpyに変更で、かつ後で述べるSDLでさらにハマる。

・Win95とWin10で異なる内部構造
しかも動作環境はWin10でx64。文字コードの他にもメモリ管理やDLL管理その他細かいところが異なっててそのままでは動かないサンプルも。VS2017も既定値はUnicode。文字コードに注意していれば動くものは多いが、特にメモリマップトファイルを使う第19章のSTRPROGは全く動かない。小手先の修正では動かせなくてSTRPROGだけはVS2017版が未完成となった。(本文中でも1062ページでWindows NTでは機能しないと解説されている。)

・VS2007のSDLチェックが有効
SDLチェックが入ってくると文字コードの変更でwcscpyしたものが、さらにwcscpy_sにしないとエラー。wcscpy_sでは戻り値すら異なっている。VS2017ではSDLチェックは既定値でオンなのであえて外さないプレイ。

・VS2017のツールオプション
VS2017についているコマンドラインツール類のオプションもVC4から変わってしまってるのでメイクファイルも修正が必要。LIBC.LIBがなくなっているのでLIBCMT.LIBに置き替える。リンカオプションは簡単になっていて /subsystem:windowsを使うとうまくいく。

・VS2017のWindowsデスクトップアプリケーションのやる気の無さ
新しいプロジェクトのスケルトンを生成させるとコンパイル時にワーニングがでるし、文字化けもする。.cpp、.hをBOM付きUnicodeで、.rcをANSIで保存しなおすととりあえず直る。Win32SDKヘルプがまともに参照できなくて、基本的に英語なのはともかく、.Netなヘルプが出てきたり。やる気なさすぎ。今回はこの厄介なスケルトンを本のサンプルにあわせて変更するという行為を行う。

・その他のレギュレーション
付属CDからのコピペは禁止。そして写経ではないのでVS2017のIDEの機能をフルに使うことにする。本書の冒頭部分20ページに書かれているとおりIDEの解説は一切載っていないし、実際にVS2017が吐き出すWindowsデスクトップアプリケーションのスケルトンのコードを理解するためには、この本の全1150ページ中590ページまで読む必要がある。でもIDEの力を借りれるとそれ以上に効率よくサンプルを消化できるのではないかと思う。プログラミングWINDOWS3.1を読んだときは実際にメモ帳の手書きプロジェクトで通したし、MSC/C++7.0のクソPWB(IDEっぽい見た目のテキストエディタ)ではそれでも良いと思ったが、今それをやり直す気力は起きない。

※実は虫食い的にVMware+Win2000+VC6も使った。こちらのほうが明らかに変更箇所は少なくて、ほぼ問題なく動く。

poppadx64

この本の目玉のサンプル、テキストエディタのPopPadをWin10+VS2017で完成させると、64ビット、Unicode対応のテキストエディタに。

そんなこんなで苦労はしたが、それなりに得られたものはあった気がする。20年も前の本だが、今の環境でもだいたい通用してしまうというのはなかなかすごい。Windowsでプログラムを書く人ならこのシリーズは一読の価値はある。でも前提としている環境はそろえた方が楽だ。

2018/1に確認したらアマゾンではWin95対応の第四版がぼったくり価格になってた。上下巻に分かれてしまったが第五版のがまだ定価より安い。

広告

プログラミングWindows95 をVS2017で。” への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中