ページ 11

フルスクリーンで実行中に

Posted: 2010年6月28日(月) 00:00
by wing
Dxライブラリを使って作ったゲームをフルスクリーンで実行している時、
キーボードのCtrlキーとAltキーの間にあるキーを押すと
(Windousのタスクバーのスタートボタンをクリックした時と同じこと)
スタートメニューが出てきて、ゲームは応答しなくなり、強制終了するしか
なくなります。

龍神録の館ベースにしているので、きっと龍神録でも同じだと思うのですが、
これは私だけなのか、または対策はしないでキーを押さないように気をつけるのか、
私がなにかコードを書き忘れているのか、
分かる方いましたら、アドバイスをください。

Re:フルスクリーンで実行中に

Posted: 2010年6月28日(月) 10:10
by ムンバ
wingさん、おはようございます。

自宅と会社のパソコンでやってみました。
(龍神録の館のままのソース)
スタートメニューが出ますが、ゲームの画面は閉じた様に見えますが
タスクバーには残っていますので
タスクバーから再度開いて、ゲームの終了はできました。

環境は、Win7(Pro)WinXP(Home) で、VC++2008(SP1)です。

Re:フルスクリーンで実行中に

Posted: 2010年6月28日(月) 11:04
by wing
ムンバさん、ありがとうございます。

私のは、Win7、VC2008EEです。

確かに、タクスバーの中で右クリックで終了させることはできました。
しかし、終了せずに再びゲームを再開しようとすると、画面が真っ黒になって
応答なしになってしまいます。

たまたま間違ってキーを押してしまっただけですから、気をつければ済むこのなんですけど。

余談ですが、
google→ググル
Yahoo!→ヤホーで検索
(少し前にはやりましたよね)

Re:フルスクリーンで実行中に

Posted: 2010年6月28日(月) 12:24
by ムンバ
>>しかし、終了せずに再びゲームを再開しようとすると、画面が真っ黒になって
>>応答なしになってしまいます。

 Win7 ですと、帰宅しないと試せ無いので
 帰宅したら色々と試したいと思います。^^
 ご存知の通り、もっと詳しい方がたくさんいらっしゃいますので
 それまでに、原因が解るといいですね。

>>google→ググル
>>Yahoo!→ヤホーで検索

 はい。未だに、ヤホーって言ってますし。^^;

Re:フルスクリーンで実行中に

Posted: 2010年6月28日(月) 12:26
by ベリ工
>ゲームをフルスクリーンで実行している時、キーボードのCtrlキーとAltキーの間にあるキーを押すと・・・

Windowsキーの事ですね?フルスクリーンモードでは良くある話ですね。
Windowsキーだけでなく、Alt+TabキーやAlt+Windowsキー、または別アプリが
アクティブになったりするとフルスクリーンモードが解除されます。

>終了せずに再びゲームを再開しようとすると、画面が真っ黒になって応答なしになってしまいます。

私も試しに行ってみたところ、画面は真っ黒になりましたが、ゲームが応答無しには
なりませんでしたね。ゲーム自体は動いていました。そこでちょっと調べたところ、
DXライブラリのリファレンスに記載がありましたね。詳しくは下記参照願います。

http://homepage2.nifty.com/natupaji/DxL ... tml#R15N34

よって、上記リファレンスの対応を行ったらフルスクリーンのゲームに戻っても
真っ黒にはならずに元のゲーム画面に復帰しましたね。

>たまたま間違ってキーを押してしまっただけですから、気をつければ済むこのなんですけど。

確かにゲームの注意事項として『WindowsキーやAlt+Tabキー、別のアプリがアクティブになった
場合はフルスクリーンが解除され、ゲームが中断されます。』などと記載していればゲームユーザは
納得してくれるかも知れませんが、格闘ゲームやアクションゲームなど、ゲームユーザが
意図しない時に場合によってはいきなりフルスクリーンモードが解除され、ゲームが中断されてしまう
のはゲームとして行儀がよくありませんので、その対処は入れるべきだと思います。

なので試しにキーボードフックを掛け、Windowsキーがフルスクリーンモードで押下された
時にそのキーを『握りつぶす(無効にする)』処理を実装してみたところ、意図した動作
(フルスクリーンモード中にWindowsキーを押下しても解除されない事)を確認できましたので、
試してみてはいかがでしょう?但し、キーボードフックはゲーム画面が終了する際に解除する処理を
入れないと、場合によってはOSを再起動するまでずっとフックされる事があります(特にシステムフックは
他のアプリケーションにまで影響を及ぼします)。

Re:フルスクリーンで実行中に

Posted: 2010年6月28日(月) 12:29
by ベリ工
URLパスを間違えました^^;;;;

http://homepage2.nifty.com/natupaji/DxL ... tml#R15N33

です。

Re:フルスクリーンで実行中に

Posted: 2010年6月28日(月) 13:19
by wing
ペリエさん、ありがとうございます。

あのキーはWindowsキーって言うんですね。いまごろ知りました。
キーボードフックを検索してみましたが、結構たいへんですね。
少しずつ勉強してみたいと思います。

Dxライブラリのリファレンスも読んでみました。
これもじっくり読んでみないとすぐにはできそうもないですね。

ゲームを作ることばかり考えていたんですが、それ以外にも
いろいろと勉強しなければならないことがあるんですね。