ckw の小さいアイコンをちゃんとタイトルバーやタスクバーに表示させる

以下の環境で動作確認しました。

ckw はコマンド プロンプトを使い易くするソフトで、DOS 窓の画面表示やキー操作などの UI 部分を肩代わりしてくれます。
NYACUS とあわせて便利に使わせてもらってたんですが、ある日アイコンを Resource Hacker で置き換えてみたら、タイトルバーやタスクバーのアイコンが潰れてるのに気付いたので、ちゃんと小さいアイコンが表示されるようにしてみました。
と言っても、ウィンドウクラスを登録するときに渡す WNDCLASSEX 構造体の hIconSm メンバを NULL にしただけですが。
hIconSm メンバが NULL だと、システムは hIcon メンバのアイコンリソースから、小さいアイコンに適切なサイズのアイコンを見繕ってくれます。

左側が修正前、右側が修正後のタイトルバーのアイコン部分のスクリーンショット。下段はアイコンを Terminal Icon | Mac Iconset | Artua.com のものと置き換えた状態。

差分

--- main.cpp	Fri Nov 23 20:30:46 2007
+++ main.cpp	Thu Apr 01 17:30:02 2010
@@ -754,7 +754,7 @@
 	wc.hbrBackground = CreateSolidBrush(gColorTable[0]);
 	wc.lpszMenuName = NULL;
 	wc.lpszClassName = className;
-	wc.hIconSm = wc.hIcon;
+	wc.hIconSm = NULL;
 	if(! RegisterClassEx(&wc))
 		return(FALSE);

ckw改造版の修正版とuberboxの修正版と簡易電卓っぽいの。 - hideden.hatenablog.com で配布されてるソース ckw-0.8.10-mod2-src.zip の差分です。
オリジナルの作者様と改造された方々に感謝。
ckw-0.8.10-mod2-src.zip は VC でビルドできるようになっていたので、Microsoft Visual Studio .NET 2003 の NMAKE でもビルドできました。
しかし、アイコンファイルを変更してビルドしようとしたところ

rsrc.rc(5) : error RC2176 : old DIB in rsrc/icon.ico; pass it through SDKPAINT

と怒られて失敗しました。
どうやら古い RC では 256x256 のアイコンが NG のようなので、アイコンファイルを変更せずにコンパイルした rsrc.res のアイコンを、Resource Hacker で置き換えてからビルドしました。
また、Resource Hacker でも 256x256 のアイコンは想定外らしく、

  • アクセスが拒否されました。
  • システム リソースが足りません.
  • ハンドルが無効です。

などのエラーメッセージが出ましたが、アイコンの置き換え自体は成功しました。
以下のようにコマンドラインで実行すると怒られずに済みます。

ResHacker.exe -addoverwrite rsrc.res, rsrc.res, Terminal.ico, ICONGROUP, 101,