>>51
ありがとうございます。
・hFile はこの関数(WinMain) だけで使う変数で、ここで一気にビットマップを読み込むのに使っています。確かに CloseHandle(hFilt) とした方がいいですね。

・int WIDTH = 0 はひどい、static int WIDTH にするべきでした。

・WIDTH = 4 * ((bmpInfo.bmiHeader.biWidth * bmpInfo.bmiHeader.biBitCount) + 31 / 32); これもひどいなあ…ご指摘されてはじめてまずさがわかりました。
ようはビットマップの一行の幅を 32ビット単位にする操作ですね。31をたして、全体を 32 で割って DWORD 数を出し、それに 4 をかけてバイト数を出す、
ご指摘のとおり
WIDTH = 4 * ((bmpInfo.bmiHeader.biWidth * bmpInfo.bmiHeader.biBitCount + 31)/ 32); にいたしました。

すると画面に縦じまが現れました。これは重大な進歩です、これを元にもう一度元ソースを見直します。
ありがとうございました。