ページ 1 / 1
BITMAP構造体について
Posted: 2012年12月31日(月) 03:57
by mogo
http://wisdom.sakura.ne.jp/system/winap ... in105.html
このサイトの2番目にあるサンプルを実行すると何も表示されません。1番目はきちんと表示されました。
コンパイル時のエラーもなくなぜなのか見当がつきません。教えてください。
Windows 8 64bit Visual Studio Express 2012
Re: BITMAP構造体について
Posted: 2012年12月31日(月) 05:19
by へにっくす
デバッグのブレークポイントで、ちゃんとhBitmapが返ってきてるか確認してみてください。
おそらくNULLになっていると思います。
NULLになっているのを確認出来たら、こんどはGetLastError関数を使って、どういう値が返ってきてるか確認してみてください。
カギは、
bmWidthBytes は各行のバイト数ですが、これは直接設定する必要はありません
です。これが大ウソである可能性がありますw
(このホームページが作成された当時ではちゃんと動いていたと思われるので、一概に言えないのですが)
Re: BITMAP構造体について
Posted: 2012年12月31日(月) 05:42
by mogo
+ hBitmap 0x00000000 {unused=??? } HBITMAP__ *
と表示されました。GetLastError関数の使い方が調べてもわからなかったので、サンプルのどこにどう
追加すればいいのか教えてもらえますか。というかこれは環境のせいで表示されてないんですか?
Re: BITMAP構造体について
Posted: 2012年12月31日(月) 05:46
by mogo
カギは、
bmWidthBytes は各行のバイト数ですが、これは直接設定する必要はありません
です。
bmBitmap.bmWidthBytesでぐぐるとサンプルコードの修正が書かれているページがみつかりました。
これに = 6;を追加すると無事表示されました。ありがとうございます。
Re: BITMAP構造体について
Posted: 2012年12月31日(月) 06:01
by へにっくす
mogo さんが書きました:GetLastError関数の使い方が調べてもわからなかったので、サンプルのどこにどう
追加すればいいのか教えてもらえますか。
解決しちゃったようですが、エラーになるケースで値を取得するように組めばいいだけです。
コード:
hBitmap = CreateBitmapIndirect(&bmBitmap);
if ( !hBitmap )
{
dwRet = GetLastError();
// dwRet がエラーコード(DWORDで宣言)。WINERROR.Hで調べることができる。
}