トップページ > 過去ログ > 記事閲覧
ウインドウの切り替え時に
名前: 日時: 2007/05/18 14:59

前回・前々回はドモ  m_ _m 早速ですが… 以下のPRG参照 曲を鳴らしながら「青四角」を動かすPRGですが フルスクリーンモード・ウインドウモードの切り替えも同時に行っています。 この切り替えを一回でも行っただけで… 「青四角」がちらついたり, 音楽の音程やリズムが変になったりとしてしまいます。 対象法をお願いします (って毎度ながら自分のPRGミスの可能性が高い気がしますが^^;) #include "DxLib.h" #define WINDOW_X 800 //ウインドウ表示の大きさ #define WINDOW_Y 600 // int Full_Window(void) //フルスクリーンモード・ウインドウモード切り替え { static int change_Windowflag=0; char KeyBuf[ 256 ] ; GetHitKeyStateAll( KeyBuf ) ; //「TABキーと左Ctrlキー同時押し」による,フルスクリーン・ウインドウの、常時切り替え // if(ProcessMessage() == 0 && KeyBuf[KEY_INPUT_LCONTROL] == 1 &&   KeyBuf[KEY_INPUT_TAB]   == 1) { if(change_Windowflag == 1) { ChangeWindowMode( FALSE ) ; //フルスクリーンモード change_Windowflag=0; } else if(change_Windowflag == 0) { ChangeWindowMode( TRUE ) ; //ウインドウモード change_Windowflag=1; } } return 0; } int player(int x,int y,int Cr)//キャラクター表示 { DrawBox( 0+x , 0+y , 31+x ,31+y , Cr , TRUE) ; return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { //ウインドウ管理 SetGraphMode( WINDOW_X,WINDOW_Y, 32 ) ; // ChangeWindowMode( FALSE ) ; //フルスクリーンモードに初期化初期化 SetMainWindowText( "テスト" ) ; SetWindowSizeChangeEnableFlag( TRUE ) ; if( DxLib_Init() == -1 )return -1 ;// DXライブラリ初期化処理 SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先画面を裏画面にする //データ管理() int Cr,x=0,y=0,z=0; int SHandle; //大容量の曲データによるストリーム再生(MEMPRESSを使ってます) // SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ); //読み込み速度:速い 再生負荷:重い   必要メモリ領域:軽い SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMPRESS ) ; //読み込み速度:普通 再生負荷:少し重い 必要メモリ領域:普通 // SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMNOPRESS ) ;//読み込み速度:遅い 再生負荷:速い   必要メモリ領域:大きい SHandle = LoadSoundMem( 曲名パス ) ; PlaySoundMem( SHandle , DX_PLAYTYPE_BACK ) ;//バックグラウンド再生 Start = GetNowCount() ;//スタートタイムを取得 Cr=GetColor(0,0,255);//カラーデータを取得 //ゲームループ while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0) { Full_Window() ; //画面切り替え ClearDrawScreen() ;//画面を初期化 if( CheckHitKey( KEY_INPUT_LEFT) == 1 )x -= 16 ; if( CheckHitKey( KEY_INPUT_RIGHT) == 1 )x += 16 ; if( CheckHitKey( KEY_INPUT_UP) == 1 )y -= 16 ; if( CheckHitKey( KEY_INPUT_DOWN ) == 1 )y += 16 ; if( CheckHitKey( KEY_INPUT_SPACE )== 1 )z += 1 ; if(x >WINDOW_X-32) x=768; else if(x < 0) x=0; if(y >WINDOW_Y-32) y=568; else if(y < 0) y=0; player(x,y,Cr); // 裏画面の内容を表画面に反映させる ScreenFlip() ; if(CheckSoundMem( SHandle ) == 0) break;//曲が終了したら終了 } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Page: 1 |

Re: ウインドウの切り替え時に ( No.1 )
名前:管理人 日時:2007/05/19 22:47

 Dさんどうも、DXライブラリの管理人です。  青四角がちらつく現象は画面変更に伴う画面設定のリセットが原因です。 ChangeWindowMode 関数を呼び出した後再度 SetDrawScreen( DX_SCREEN_BACK );を 実行することにより解消されると思います。  あと音楽の音程やリズムが変になるのは、恐らくDさんがお使いのPCの 環境に因るものだと思います。(私の環境で実行した限りでは音程やリズムが 変になることはありませんでした)
Re: ウインドウの切り替え時に ( No.2 )
名前: 日時:2007/05/22 09:51

返信遅れました m__ヾ 「青四角」のちらつきが解消しました。 後はなんとか奮闘して 動画,画像ファイルを再描画してみたいと思います 音の方はなぜか通常通りに再生されました。 ん〜なぜか分かりません。^^; 可能な限り追求してみたいと思います 返信有り難う御座いました m__m

Page: 1 |