トップページ > 過去ログ > 記事閲覧
ウインドウモードで実行時、アクティブウィンドウか否かを知りた
名前:CYARACON 日時: 2013/05/18 00:50

いつもお世話になっております。 3Dゲームを、あえてフルスクリーンではなく「ウインドウモード」で実行しています。 実行中、キャプチャーソフトなどの他のアプリを動かすことがあります。 その際、3Dゲームソフト自身がアクティブウィンドウではなくなったこと、もしくは、アクティブウィンドウに復帰したことをプログラムで判定したいのですが、良い方法はありませんでしょうか? 目的は、ゲームプログラムが非アクティブで停止してしまうとゲーム進行時間計測が狂ってしまうため、アクティブに復帰後、時間補正をする処理を実行したいのです。

Page: 1 |

Re: ウインドウモードで実行時、アクティブウィンドウか否かを知りた ( No.1 )
名前:Will 日時:2013/05/18 10:43

SetAlwaysRunFlag()で非アクティブ時も動作するようにすればよいのでは。
Re: ウインドウモードで実行時、アクティブウィンドウか否かを知りた ( No.2 )
名前:CYARACON 日時:2013/05/18 19:55

> Will さん コメントありがとうございます。 それも試したのでですが、常にアクティブに設定すると、他のアプリで文字入力などを行うと、これに反応してゲームの動きが変わってしまうという別の問題があるのです。
Re: ウインドウモードで実行時、アクティブウィンドウか否かを知りた ( No.3 )
名前:ほめ 日時:2013/05/18 21:08

GetWindowActiveFlag()で、0の時はアクティブが外れています。 これを使えば上手くいくかもしれません。
Re: ウインドウモードで実行時、アクティブウィンドウか否かを知りた ( No.4 )
名前:Will 日時:2013/05/18 23:10

extern int SetActiveStateChangeCallBackFunction( int (* CallBackFunction )( int ActiveState , void * UserData ) , void *UserData ) ; // ウインドウのアクティブ状態に変化があったときに呼ばれるコールバック関数をセットする( NULL をセットすると呼ばれなくなる ) 上記でコールバック関数を登録してコールバック関数内に必要な処理を書いて下さい。 詳しい使い方は関数名でググれば過去の回答がヒットすると思います。
Re: ウインドウモードで実行時、アクティブウィンドウか否かを知りた ( No.5 )
名前:CYARACON(解決済み) 日時:2013/05/19 20:53

> ほめ さん 返信ありがとうございます。 GetWindowActiveFlag()、試してみたところ、これでうまくいきそうです。 ありがとうございました。 > Will さん 再度、返信ありがとうございます。 今回は、GetWindowActiveFlag()、を試してみることになりました。 コールバック関数は、自分にはやや敷居が高いようです。後日、再度試してみることにします。 ありがとうございます。

Page: 1 |