トップページ > 記事閲覧
ゲーム以外のウィンドウでもWindowsキーが効かなくなる
名前:SPATZ 日時: 2015/07/04 20:18

はじめまして。 DxLibでゲームを作っているSPATZといいます。 ゲーム内でALTキーを無効にしたくてSetSysCommandOffFlag(TRUE)を呼ぶ処理を追加しました。 期待通りにゲーム内でALTキーやF10、Windowsキーが無効になったですが、 ゲームが起動している間は他のウィンドウ(デスクトップ含む)に移動してもWindowsキーが効かなくなってしまいます。 (ALT・F10キーは他ウィンドウでは効きます) 私がやりたい事として、 ゲーム中にALTキーが無効になっていれば、F10・Windowsキーは有効・無効どちらでも構わないのですが、 他のウィンドウに遷移した場合は、その設定が影響して欲しくないと思っておいます。 ゲーム中にALTキーのみを無効にする方法はありますでしょうか? もしくはSetSysCommandOffFlag(TRUE)の設定がゲーム画面外に影響させない様にはできないでしょうか? 以下に使用OSとライブラリのバージョンを記載します。 OS : Windows8.1 DxLibのバージョン: 3.12e ※ 昔に3.10aを取り込んで、SetSysCommandOffFlag(TRUE)を使用していた際は  ALT/F10のみが無効でWindowsキーはゲーム画面中でも有効になっていました。
メンテ

Page: 1 |

Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.1 )
名前:管理人 日時:2015/07/06 00:11

はじめまして (リノ=ライトのゲームを製作されている方でしょうか・・・?) 元々は別のウインドウにフォーカスが移ったら一時的に Windowsキー等を無効化する効果が OFFになるはずなのですが、その処理が最近のバージョンでは正常に動作していなかったようです 修正版をアップしましたので、よろしければお試しください m(_ _;m ( あと64bitビルドでも正常に動作していなかったバグを修正しました ) https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.2 )
名前:SPATZ 日時:2015/07/06 01:13

管理人さんこんばんわ。 そうです。リノのゲームを作っているSPATZです。 いつもお世話になっております。 まさか存じてくれていて嬉しいですw 修正版のライブラリの作成ありがとうございます。 頂いたライブラリを明日か明後日の夜に取り入れて確認しますので、 また結果を報告させて下さい。 よろしくお願いします。
メンテ
Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.3 )
名前:管理人 日時:2015/07/07 02:17

おぉ、ご本人でしたか システムの完成度が高い上に動画としての面白さも重視されているので毎回楽しませて頂いています (^ ^; あと、すみません、No.1の修正版ですが、ビルドするだけして、ネット上にアップしていませんでした orz なので申し訳ありません、もう一度ダウンロードしてください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.4 )
名前:SPATZ 日時:2015/07/08 00:07

管理人さんこんばんわ。 お世話になっております。SPATZです。 自作ゲームをそう思って頂いて嬉しいです。 悪ノリで作っている所も多々あるゲームですが・・w ご提供頂いたライブラリの確認を行いました。 無事、ゲーム画面以外でAlt/F10/Windowsキーが有効になっている事を確認しました。 ご対応ありがとうございます。 ただ恐縮ですが、もう1点お願いがあります。 自作ゲームを3.12eから3.14eに変更する事により、 Effekseerや自作シェーダ処理のエフェクト初期化などで失敗する箇所が発生しました。 まだ詳しく調査をしていませんが、恐らくDirecX11に以降された影響だと思います。 その影響により、以下の2つのどちらかの対応が必要になります。 --------------------------------------------------------------------- @自作ゲームを3.14eに対応できる様に修正する。 A現在使用している3.12eをベースに今回の修正箇所のみをマージする。 --------------------------------------------------------------------- もし@を適用するのであれば当然こちらで対応しますが、 個人的にはAの方が修正のインパクトが少ないと思っております。 そこで新たに確認とお願いですが、 まず実装上、3.12eの環境に今回の修正のみを適用する事は可能でしょうか? さらにもし可能であれば、今回の修正箇所の修正前・修正後のソースコードを頂く事は可能でしょうか? もし修正前後のソースコードを提供して頂けるのであれば、 こちらで3.12eのソースに修正分をマージしてライブラリを生成し直します。 (3.12eのソースからライブラリを作り直し、その環境で正常に動作する事は確認済) お手数をおかけしますが、ご確認お願いします。
メンテ
Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.5 )
名前:管理人 日時:2015/07/08 00:40

すみません、シェーダーは Direct3D 9 と Direct3D 11 では別物で、 加えて Effekseer は Direct3D 11 には対応していないので、 自作シェーダーや Effekseer を使用される場合は DxLib_Init の呼び出しの前に SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; という記述を追加してください 使用する Direct3D のバージョンが以前と同じ 9 になるので、問題なく動作すると思います よろしければお試しください m(_ _)m
メンテ
Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.6 )
名前:かげさん 日時:2015/07/09 00:14

横槍ですみません。 気になったので便乗質問させて下さい。 最近、Effekseerを導入した者なのですが SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; の記述が無い状態でもEffekseerのエフェクトを使えています。 Effekseer側のサンプル(ttps://github.com/effekseer/EffekseerForDXLib/releasesのEffekseerForDXLib_100CTP1_314d.zip)を見ると SetUseDirect3DVersion( DX_DIRECT3D_9EX ) が無い代わりに SetUseDirect3D9Ex(FALSE); という記載があるんですが、 SetUseDirect3D9Ex(FALSE); とすると SetUseDirect3DVersion( DX_DIRECT3D_9EX ) と同じような効果になるのでしょうか? (なお、DXライブラリは、3.14dを使用しています)
メンテ
Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.7 )
名前:SPATZ(解決) 日時:2015/07/09 00:21

管理人さんこんばんわ。 お世話になっております。SPATZです。 ゲーム全体を通して動作確認をしておりまして返信が遅くなりました。 ご教授頂いた様にSetUseDirect3DVersion(DX_DIRECT3D_9EX)を呼び出す事により、 問題なくエフェクト関連及びゲーム全体が問題なく動作しました。 これにて問題点が全て解消した為、 このスレッドはクローズとさせて頂きます。 ご丁寧に対応して頂きありがとうございます。 -------------------------------------------- あと1点補足情報です。 既に解消した問題ですが、ライブラリ以降により 特定のステージに行くと処理が異常に遅くなるという問題を対応していました。 調査をしたところコリジョン関連が原因で、 内容としてはメッシュ数が0のフレーム番号をMV1SetupCollInfo()でセットアップし、 そのフレームに対してMV1CollCheck_Capsule()をコールするとその部分の処理が異常に遅くなるというものでした。 そもそもメッシュ数0のフレーム番号をMV1SetupCollInfoに指定するのが正しくないので、 その部分を修正すると問題が解消しましたが、情報共有として報告しました。 以上です。 それではこれからもDXライブラリにはお世話になると思います。何卒よろしくお願い致します。 ご回答頂きありがとうございました。
メンテ
Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.8 )
名前:管理人 日時:2015/07/11 01:44

> かげさん はい、同じような効果になります 後から機能を追加・追加で実装してきたため、DirectX の描画に関する関数は SetUseDirectDrawFlag SetUseDirect3D9Ex SetUseDirect3D11 の3つがあり、どの関数に何の引数を渡せばどの Direct3D のバージョンが使用されるのか よく分からない状態になっていたので、上記3つの関数の補助関数として SetUseDirect3DVersion を追加しました 因みに SetUseDirect3D9Ex( FALSE ) ; は SetUseDirect3DVersion( DX_DIRECT3D_9 ) ; に相当します 私はNo.5の書き込みで SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; を推奨しましたが、 Effekseerの作者さんが SetUseDirect3DVersion( DX_DIRECT3D_9 ) ; を推奨されるのでしたら、 SetUseDirect3DVersion( DX_DIRECT3D_9 ) ; にしておいたほうが良いかもしれません・・・ ( 因みに Direct3D 9Ex は Direct3D 9 に比べて WindowsVista 以降のドライバ形式に近いAPIなので  ( 体感できるほどの差があるかどうかはさておき ) Direct3D 9Ex が使用できる場合は Direct3D 9Ex を  使用した方が良いです ) > SPATZさん 正常に動作した様で何よりです かげさんのお書き込みの通り Effekseerの作者さんの推奨は Direct3D 9 のようですので、 SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; でも正常に動作しているとのことですが、 一応 SetUseDirect3DVersion( DX_DIRECT3D_9 ) ; としておいた方が良いかもしれません > あと1点補足情報です。 ご情報ありがとうございます 原因を突き止め、修正しました ( MV1CollCheck_Capsule 等の関数は最初に簡易的なキューブ同士の当たり判定を行い  当たっていると判定された場合のみ処理負荷の高い厳密な当たり判定を行うのですが、  ポリゴンの無いフレームでは簡易的な判定に使用するキューブの座標が不定になり、  必ず「キューブ同士の簡易当たり判定では当たっている」ことなってしまっていました、  厳密な当たり判定は処理の準備自体が重いので、それが必ず実行されることで異常な  遅さになってしまっていたのだと思います ) 既にメッシュ数0のフレームに対して関数を呼ばないという最適な処理を行われているとのことですので 不要だと思いますが、一応こちらに修正版をアップしておきました m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.9 )
名前:かげさん 日時:2015/07/11 12:17

> 管理人さん モヤモヤしていたことが分かり、スッキリしました。 丁寧な説明ありがとうございます! Direct3D 9Ex については不勉強でした。 情報ありがとうございます!
メンテ
Re: ゲーム以外のウィンドウでもWindowsキーが効かなくなる ( No.10 )
名前:SPATZ(解決) 日時:2015/07/11 22:53

管理人さん、かげさんこんばんわ。 お世話になっております。SPATZです。 > 管理人さん、かげさん 情報提供して頂きありがとうございます。 Effekseerの設定について、 SetUseDirect3DVersion(DX_DIRECT3D_9)を設定する様にします。 > 管理人さん コリジョンの調査について対応ありがとうございます。 実はあの後、メッシュ数0のフレームに対して関数を呼ばない様に対応しても たまに処理が重くなっている場面が発生しておりましたが、 新たに提供されたライブラリに差し替えで現象が解消しました。 その他処理についても問題なく動作しております。 ご対応ありがとうございます!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存