画像が消える

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kaba

画像が消える

#1

投稿記事 by kaba » 16年前

最初のロード中というのでしょうか?
ロード中にウィンドウを画面外に持っていくとその部分が黒くなり
何をしても何も表示されなくなってしまいます。
そのような現象はどのようにしたら直りますでしょうか?

御津凪

Re:画像が消える

#2

投稿記事 by 御津凪 » 16年前

簡単に説明すると、何も表示されないのは再描画されていないためです。

ロード中でも描画処理がなされていれば、きちんと描画されます。
(が、ロード中では描画もおろそかになりやすいため、完全に直すことは難しいです)

Dixq (管理人)

Re:画像が消える

#3

投稿記事 by Dixq (管理人) » 16年前

ウィンドウがノンアクティブでも処理を続けるようにしたらいいと思います。
SetAlwaysRunという関数だったと(名前違うかもしれません)思います。
これをTRUEにしておくと、ノンアクティブでも処理を続けます。
DXライブラリのリファレンスに書いてありますので、そちらをご覧下さい。

kaba

Re:画像が消える

#4

投稿記事 by kaba » 16年前

↑名前の書き忘れしました。

kaba

Re:画像が消える

#5

投稿記事 by kaba » 16年前

↑の間違えました;;
すいません;;

SetAlwaysRunでは出来ず
SetAlwaysRunFlagでやってみましたが出来ません。

>ロード中でも描画処理がなされていれば、きちんと描画されます。
ロード中ではないんですが
黒くなった部分はゲームが始まって他の絵が表示されても
その部分だけ黒くなったまま直りません。
分かりますでしょうか?

Dixq (管理人)

Re:画像が消える

#6

投稿記事 by Dixq (管理人) » 16年前

う~ん、プログラムコードはどんなコードですか?

コスモ

Re:画像が消える

#7

投稿記事 by コスモ » 16年前

横やりを入れるようで済みません。

現時点では問題のプログラムのソースコードが無いので詳しくはわかりませんが…。
再描画処理について御津凪さんがおっしゃっていますが、
この処理が
int WINAPI Winmain(~){
 (この部分)
}
に無いのが原因ではないでしょうか?

kaba

Re:画像が消える

#8

投稿記事 by kaba » 16年前

Dixqさんすいません全く気づかず返事してませんでした・・・

もしかしたら再描画処理というものを勘違いしていたかもしれません。
ただ単に新しい画像が表示されたからって再描画されたわけじゃないんですよね?
再描画処理とはいったいどんな事を書けばよろしいのでしょうか?
コードを上げた方がよろしいでしょうか?

コスモ

Re:画像が消える

#9

投稿記事 by コスモ » 16年前

>コードを上げた方がよろしいでしょうか?

Dixqさんではないですが…コードは上げた方が良いと思います。
その方がこちらも具体的な原因が分かりますし。

kaba

Re:画像が消える

#10

投稿記事 by kaba » 16年前

http://www1.axfc.net/uploader/H/so/70719
コードも長くどこを上げたら良いのかわからないので
そのまんま圧縮して斧に上げました。
パスは「脱出」です。
そのまんまコピーしたりしてたので関係ない説明文などあったりします。
手間を取らせて申し訳ないですがよろしくお願いします。

toyo

Re:画像が消える

#11

投稿記事 by toyo » 16年前

WinMain( )とwann( )にreturnがありませんね。return 0;を追加しましょう。
wann( )にDxLib_Init( )が2箇所あって動きませんでした。
if( DxLib_Init() == -1 )return -1;
を削除したところ表示されるようになりました。
私の環境ではウィンドーを画面の外に出したり他のウィンドーで隠したりしましたが消えることはありませんでしたよ。

水が出てゲームオーバーになるところまでやりました。

toyo

Re:画像が消える

#12

投稿記事 by toyo » 16年前

質問をよく読んでませんでした
ロード中というか初期化中にウィンドーを画面の外に出すんですね
確かに真っ黒になりました

toyo

Re:画像が消える

#13

投稿記事 by toyo » 16年前

初期化関数の後に
SetDrawArea(0, 0, 639, 479);
で描画領域をリセットすればよさそうです。

コスモ

Re:画像が消える

#14

投稿記事 by コスモ » 16年前

DXライブラリのレファレンスを見てみましたが、
初期化中にウィンドウが隠されると再描画するような関数はないようです。
toyoさんの方法か、フルスクリーンで起動するように変更してみてはどうでしょうか?
int WINAPI WinMain(~){
        … …
        }
       return 0;
}

//画像音楽ロード
int wann(void){
	  {
   … …
        }
       return 0;
}
のreturn 0;が抜けています。
warning C4996: 'fopen'の警告を消すには
#include ~
と
     int a=0
の間のどこかに
#pragma warning(disable:4996)
を追加すればこの警告は消すことが出来ます。

kaba

Re:画像が消える

#15

投稿記事 by kaba » 16年前

>WinMain( )とwann( )にreturnがありませんね。return 0;を追加しましょう。
勉強不足でreturn 0;を書く理由がいまだに
分からないんですが書いておきました。
ありがとうございます。

>wann( )にDxLib_Init( )が2箇所あって動きませんでした。
コピーばっかりしていたので気づきませんでした。
自分のPCでは起動したんですがPCによっては起動しないんですかね?
ありがとうございます。

>初期化関数の後に
>SetDrawArea(0, 0, 639, 479);
ウィンドー下と右が1ドット足らなかったので
SetDrawArea(0, 0, 640, 480);でやったらピッタリできました。
画面外に出してもちゃんと映りました。
ありがとうございます。

>#pragma warning(disable:4996)
>を追加すればこの警告は消すことが出来ます。
warning C4996: 'fopen'の警告が何を意味してるのかも分からず
警告がどこに出ていたのか分からなかったのですが
書いておきました。
ありがとうございます。

御津凪さん Dixqさん toyoさん cosmoさん
今回はありがとうございました。

コスモ

Re:画像が消える

#16

投稿記事 by コスモ » 16年前

"解決"と出ていますが一応追記です。

>warning C4996: 'fopen'の警告が何を意味してるのかも分からず
>警告がどこに出ていたのか分からなかったのですが
>書いておきました。

についてですが、fopen関数は例外が発生した時にそれを通知する手段を持たないのです。
fopen関数よりもセキュリティを強化した…と言うか
例外が発生した時に通知する手段を持つ関数fopen_s関数があります。
…とマイクロソフトのリファレンス
http://msdn.microsoft.com/ja-jp/library/8ef0s5kh(VS.80).aspx
に書かれています。

自分なりの解釈が含まれているかもしれませんが、
warning C4996: 'fopen'の警告は
「出来るだけfopen関数ではなく、fopen_s関数の方を使ってください」
と言う意味を表していると思います。

fopen関数とfopen_s関数の引数の違いについてですが、
fopen関数の引数は2ですが、fopen_s関数の引数は3であることに注意が必要です。
必要なヘッダーはstudio.hでfopen関数を使う時と同じです。
fopen_s( 
   FILE** pFile,
   const char *filename,
   const char *mode 
);
の定義中でそれぞれ

pFile:
開かれたファイルへのポインタを受け取るファイル ポインタへのポインタ。
filename:
ファイル名。
mode:
アクセス許可の種類。
を表しています。

fopen関数と比べて"FILE** pFile,"の引数が増えています。

kaba

Re:画像が消える

#17

投稿記事 by kaba » 16年前

大体分かりました。
ありがとうございます。

Dixq (管理人)

Re:画像が消える

#18

投稿記事 by Dixq (管理人) » 16年前

>return 0;

これについてはC言語の入門サイトで「関数」の分野を勉強すればよいです。
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
7章を一通り読んでみて下さい。

kaba

Re:画像が消える

#19

投稿記事 by kaba » 16年前

大体分かりました。
解決しているのに皆さんありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る