BITMAPFILEHEADER & BITMAPINFOHEADER
http://www.hatena.ne.jp/1090185509
プログラム(EasyJPEG.cpp)。関数 LoadBmp(...) のBITMAPINFO.BITMAPINFOHEADER に正確な情報が入らない。何か間違ってますでしょうか?。http://www.idiagdia.com/disca/fi.. - 人力検索はてな
チラッとしかみてないですが、ポインターのキャスト&位置あわせを間違ってません?
多分意図されているのは
pBmi= (BITMAPINFO*) (pFileBuf + sizeof(BITMAPFILEHEADER));
pBmiImg= ((BYTE*) pBfh) + pBfh->bfOffBits;
だと思うんですが、コンパイラが意図を察して適当にオペレータの優先順位を変えてくれるなんてことはないですよ(^^ゞ
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_DIB.html
VC++テクニック : ディスク上のBMPファイルを表示
.NET持ってないんで確認出来できないです。申し訳ないです。
>> 65: pBmi= (BITMAPINFO*) pFileBuf + sizeof(BITMAPFILEHEADER);
コレだとBITMAPINFO型にキャストしたpFileBufとBITMAPFILEHEADER型の
サイズを足す形になってなんか変になりそうな気がします。(適当ですみません)
pBmi= (BITMAPINFO*) (pFileBuf + sizeof(BITMAPFILEHEADER));
全体をカッコで囲んで左式に代入する際にキャストしてみては如何ですか?
似非プログラマなんであんまりソース分かってませんが・・・(^-^;)
ありがとうございます。
URLはダミー
ポインタの使い方がおかしいです
構造体のポインタにサイズを加算したらおかしくなります。
最初にアドレスを加算してから構造体のポインタにキャストしないといけません
誤:pBmi= (BITMAPINFO*) pFileBuf + sizeof(BITMAPFILEHEADER);
正:pBmi= (BITMAPINFO*)( pFileBuf + sizeof(BITMAPFILEHEADER));
ありがとうございます。期待していた正解です。
以前にお答えていただいた方の場合では
(BITMAPINFO*)((BYTE*)pFileBuf) + sizeof(BITMAPFILEHEADER)
と何度も眠気と戦いながら試していたのですが、上手くいきませんでした。
pBmi= (BITMAPINFO*) (pFileBuf + sizeof(BITMAPFILEHEADER));
ではないでしょうか?
正解です。ありがとうございます。
訂正:
virus さん、 syszabu さんの答えも期待していた正解です。ありがとうございました。
ありがとうございます。