掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
文字の位置からintへ (ID:55472)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
止まるという現象の内容が不明です。 たとえば 0xC0000005 Access Violation。 であるとか、 無限ループに入っているとか。 システムがフリーズしてしまうとか。 無反応になるのか。 いずれにせよ、デバッガ上で動かすべきです。 for 文の前(MapDrawPointY の計算式)と return 文にブレークポイントを貼り、 各パラメタ(変数値)を確認したほうがよいでしょう。 まさか、描画先はデスクトップウィンドウだったりしないですよね。 あと、問題が StretchDIBits() らしいと当たりをつけたなら、 別のプログラムを作成して、このループだけを実行するような テストプログラムを作成してみるといいでしょう。 その際、マップチップも1つだけにします。 そのほか、気になる点として、2点あります。 ひとつは、BITMAPINFO の内容です。 これを設定している部分はどうなっているでしょうか。 次はこの部分です。 >> for(n=0; n<3; n++) >> if(StageMap[ i+MapDrawPointY][j + MapDrawPointX] == BmpData[n].Name[0]) >> break; これ、if 文が一度も成立(true)しないと n == 3 になりますが、 BmpData[n].bPixelBits , BmpData[n].bmpInfo は、n == 3 で大丈夫ですか。 あと、問題とは関係ありませんが、 >> if( j + MapDrawPointX < 0 || i + MapDrawPointY < 0 || >> j + MapDrawPointX >= StageWidth || >> i + MapDrawPointY >= StageHeight ) continue ; 横に長くてみずらくないですか。 if(( j + MapDrawPointX ) < 0 ) continue; .. if(( i + MapDrawPointY ) >= StageHeight ) continue; 演算子も優先順位をあてにせず、括弧で明示する。 仕事ならこういう書き方が要求されますね。 処理速度はコンパイラの最適化で同じですから。 ちなみにウィンドウサイズは 1600x1200 でいいのですか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.