トップページ > 記事閲覧
CheckHitKey、GetMouseInput不具合?
名前:タンタル 日時: 2020/01/07 15:01

C#で現在動作させているのですが、タイトルのCheckHitKeyやGetMouseInputの戻り値が常に0になります。 DX.DxLib_Init成功後、下記の通り実装していますが、何故かダメです。。 ※描画等、問題なく出来ているため、ある程度コードを省略して記載しました。 コントロール上に描画しています。 バージョンは、DXライブラリ Ver3.21c using DxLibDLL; int ret=0; if (DX.DxLib_Init() < 0) {  return -1; } while (true) {  ret = DX.GetMouseInput(); // フォーカス状態でコントロール内をマウスクリックしても常に0 } DX.DxLib_End(); return 0;
メンテ

Page: 1 |

Re: CheckHitKey、GetMouseInput不具合? ( No.1 )
名前:タンタル 日時:2020/01/07 17:12

下記にログを添付しました。 DirectInput関係初期化のログが、何もない点が気になってます。 0:ChangeWindowMode実行 0:ChangeWindowMode実行 10:ウインドウモードフラグが立てられました 10:DXライブラリの初期化処理開始 30: システムの情報を出力します 40: DXライブラリ Ver3.21c 50: 論理プロセッサの数 : 4 60: OS Windows7 ( Build 7601 Service Pack 1 ) 180: 現時点のCPU動作速度:大体2.12GHz 185: MMX命令を使用します 191: SSE命令が使用可能です 197: SSE2命令が使用可能です 203: CPUベンダ:GenuineIntel 233: CPU名:Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz 239: COMの初期化... 失敗 252: 非同期読み込み処理の初期化...成功 264: ファイルアクセス処理の初期化...成功 278: メモリ総量:8089.06MB 空きメモリ領域:3323.98MB 299: タイマーの精度を検査します 307: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 314: パフォーマンスカウンターを使用します タイマー精度 : 2240.957000 KHz 328: ソフトの二重起動検査... 二重起動はされていませんでした 348: IMEを無効にしました 559: パッドの数は 0 個です 566: 入力関連の初期化をしました 602: DirectSound の初期化を行います 608: DirectSound インターフェースの取得を行います.... 成功 672: 引き続きインターフェースの初期化処理... 成功 796: DirectSound デバイスを列挙します 805: Module Name : Description : プライマリ サウンド ドライバー 811: Module Name : {0.0.0.00000000}.{0a3d9a7d-03d2-4292-9ab9-4336dcaeaa1c} Description : Speakers / HP (IDT High Definition Audio CODEC) 818: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 826: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 833: 利用可能サンプリング精度 839: Primary 16bit = OK 8bit = OK 846: Secondary 16bit = OK 8bit = OK 853: 利用可能チャンネル 859: Primary MONO = OK STEREO = OK 866: Secondary MONO = OK STEREO = OK 873: DirectSound の初期化は正常に終了しました 880: d3d11.dll の読み込み.... 成功 898: dxgi.dll の読み込み.... 成功 912: API CreateDXGIFactory1 のアドレスを取得します.... 成功 927: IDXGIFactory1 を作成します.... 成功 946: API D3D11CreateDevice のアドレスを取得します.... 成功 960: IDXGIAdapter を取得します.... 成功 973: Direct3D 11 FeatureLevel 11_0 以上を対象とします 979: ID3D11Device オブジェクトを取得します.... 成功 1013: IDXGIDevice1 を取得します.... 成功 1075: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 1102: [ウインドウモード 1366x768] 1120: IDXGISwapChain を作成します.... 成功 1145: IDXGIFactory->CreateSwapChain の戻り値:0x00000000 1166: IDXGIOutput を取得します.... 成功 1188: Graphics Device:Intel(R) HD Graphics Family 1198: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1206: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 1216: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 1225: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 1234: 16bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1244: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1258: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1271: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1281: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1291: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1301: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 1311: DXT2テクスチャフォーマットは使えません 1329: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 1338: DXT4テクスチャフォーマットは使えません 1348: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 1358: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1369: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1380: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1390: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1402: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1412: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1422: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1432: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1442: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1453: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1465: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1476: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1485: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1495: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1505: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1524: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1539: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1551: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1562: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1587: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1600: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1613: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1625: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1635: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1645: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1655: 使用する機能レベル:D3D_FEATURE_LEVEL_11_0 1665: 同時にレンダリングできるバッファの数:8 1676: 最大テクスチャサイズ 幅:16384 高さ:16384 1686: 標準描画用の頂点バッファの作成.... 成功 1706: シェーダーコード関係の初期化.... 成功 1848: 各種シェーダー用定数バッファの作成.... 成功 2018: 各種 ID3D11InputLayout の作成.... 成功 2134: 画像の単純転送処理の初期化... 成功 2170: 深度バッファを作成します.... 成功 2199: フォントの初期化を行います 2215: フォントの初期化は正常に終了しました 2226: 文字コードバッファの初期化を行います... 完了しました 2310:DXライブラリの初期化処理終了 20701:フォントの初期化を行います 20727:フォントの初期化は正常に終了しました 20761:d3d11.dll の解放 1 20777:dxgi.dll の解放 1 20810:Direct3D11 のオブジェクト数を出力 20825:Direct3D11 のオブジェクト合計数 : 0 20844:入力関連の終了処理... 完了 20871:DirectSound の終了処理は正常に終了しました 20914: 20925:Alloc memory dump 20938: Total size:0(0.000kb) Alloc num:0 20949:
メンテ
Re: CheckHitKey、GetMouseInput不具合? ( No.2 )
名前:管理人 日時:2020/01/08 00:14

DXライブラリは定期的に ProcessMessage を呼ぶ必要があります キー入力やマウス入力も ProcessMessage を呼ばないと機能しませんので while (true) {  ret = DX.GetMouseInput(); // フォーカス状態でコントロール内をマウスクリックしても常に0 } こちらの部分を while (DX.ProcessMessage == 0) {  ret = DX.GetMouseInput(); // フォーカス状態でコントロール内をマウスクリックしても常に0 } このようにして、1ループ毎に ProcessMessage を呼ぶようにしてください m(_ _)m
メンテ
Re: CheckHitKey、GetMouseInput不具合? ( No.3 )
名前:タンタル 日時:2020/01/08 13:08

管理人様 ご回答ありがとうございます。 上記(DX.ProcessMessage)にして、動作確認してみましたがやはり変化はありませんでした。。 キーボードやマウス関連以外のDX APIは問題なく動作しているようですので、何かしら不具合の可能性はないでしょうか?
メンテ
Re: CheckHitKey、GetMouseInput不具合? ( No.4 )
名前:管理人 日時:2020/01/08 23:03

うーん謎ですね…手元では問題なくマウスの入力もキーボードの入力も取得出来ています… 私の環境で正常に入力が取得できることを確認できたプロジェクトをこちらにアップしてみましたので、 よろしければタンタルさんの環境でも正常に動作するか試してみていただけないでしょうか? m(_ _)m https://dxlib.xsrv.jp/temp/DxLibDotNetTest2019.zip ( 中にある DxLibDotNetTest2019.sln を開いて Debug ビルドを実行すると画面の左上に GetMouseInput の結果が、 画面中心には上下左右キーで動く円が表示されます )
メンテ
Re: CheckHitKey、GetMouseInput不具合? ( No.5 )
名前:タンタル 日時:2020/01/09 12:52

管理人様 上記環境アップしていただき有難う御座いました。 ただちょっと説明不足なところがあり、状況が違うので下記に環境について記載させて頂きました。 頂いた内容と明らかに異なる点ですが、 描画先を変更するため、DX.SetUserWindow(this.Handle)にて、別のコントロールを指定しております。 あと、当方のDXログですが、DirectInput関係初期化処理が全くなく、COMの初期化に失敗しています、これは何か設定か何かで変わります? ちなみに、普通にC++版(VS C++)で実行した場合は、上記のログが全てでております。。
メンテ
Re: CheckHitKey、GetMouseInput不具合? ( No.6 )
名前:管理人 日時:2020/01/09 23:38

> 描画先を変更するため、DX.SetUserWindow(this.Handle)にて、別のコントロールを指定しております。 > あと、当方のDXログですが、DirectInput関係初期化処理が全くなく、COMの初期化に失敗しています、これは何か設定か何かで変わります? はい、恐らく SetUserWindow による影響だと思います SetUserWindow に渡すウィンドウハンドルの種類などによって現象に差異がありますので、 よろしければ本件の現象が発生する簡単なプロジェクトを作成して、メールで BQE00322(あっとまーく)nifty.com ( (あっとまーく) を @ に置き換えてください ) に送っていただけないでしょうか? m(_ _)m 本件の現象を回避する方法や、実現されたいことの代替手段があるかなどを調べてみたいと思います > ちなみに、普通にC++版(VS C++)で実行した場合は、上記のログが全てでております。。 こちらは、C#版と全く同じこと( SetUserWindow( Handle ); を行うなど )を C++版で行ったら、 C++版では本件の不具合が発生しなかった、ということでしょうか?
メンテ
Re: CheckHitKey、GetMouseInput不具合? ( No.7 )
名前:タンタル 日時:2020/01/15 10:10

管理人様 返信がだいぶ遅くなりました><; SetUserWindowに渡すウィンドハンドルの種類によっては現象がありえるのですね。 >こちらは、C#版と全く同じこと( SetUserWindow( Handle ); を行うなど )を C++版で行ったら、 >C++版では本件の不具合が発生しなかった、ということでしょうか? はい、C++版では本件の不具合は発生しておりません。おそらくC++版ではSetUserWindow APIを使用していないためかと思います。 >本件の現象を回避する方法や、実現されたいことの代替手段があるかなどを調べてみたいと思います。 有難う御座います!本当に助かります! かなりボリュームのあるプロジェクトのため、ある程度対象となるコントロールのみとなるよう切り離したプロジェクトを、 教えていただいたメールアドレスに添付させて頂きたいと思います。 少し時間かかりますけど、宜しくお願い致します。
メンテ
Re: CheckHitKey、GetMouseInput不具合? ( No.8 )
名前:管理人 日時:2020/01/16 00:40

了解です メールお待ちしております
メンテ

Page: 1 |

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

   クッキー保存