[過去ログ] Win32API質問箱 Build124 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
51
(3): 2017/12/01(金)05:40 ID:k0FZtccS(1) AAS
バグだらけのひどいコードだな!
>>47よ!動かないの当たり前だ!
まず、グローバル変数で、HANDLE hFileを共有する設計前提で作ってるの?

51行目からのint WINAPI WinMain内でのバグっぽいの発見!
55行目:HANDLE hFile;
ローカル変数で定義だと…?
ローカル変数で定義するなら、そのコード内でhFileをCloseHandle();なぜしていないの?
hFileをグローバル変数で使いまわすなら、55行目のHANDLE hFile;のローカル変数の定義は不要じゃねーの?
まずは、55行目を削除しろ!

グローバル変数と、ローカル変数をちゃんと理解して使いましょう!
省15
53
(2): ◆QZaw55cn4c 2017/12/01(金)08:19 ID:ytACGBKw(1/3) AAS
>>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); にいたしました。

すると画面に縦じまが現れました。これは重大な進歩です、これを元にもう一度元ソースを見直します。
ありがとうございました。
54: ◆QZaw55cn4c 2017/12/01(金)08:51 ID:ytACGBKw(2/3) AAS
>>51
>>53
すみません、hFile はグローバル変数でした。ローカル変数定義を削除しました
55: ◆QZaw55cn4c 2017/12/01(金)08:57 ID:ytACGBKw(3/3) AAS
>>51>>53
ご指摘を受けたあたりを修正して、うまく表示できるようになりました。
コメントをいただき、ありがとうございました!
https://ideone.com/W8wuOF

>>52
SetFilePointer() は次回 WM_PAINT 時に備えたものだと考えています。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.411s*