トップページ > 過去ログ > 記事閲覧
C#でのキー取得
名前:Dq 日時: 2007/10/04 20:31

C#用DxLib.DLLを試させて頂いております。 過去のC++プログラムを順次移植しているのですが、 キーボード情報を受け取るために char[] c = new char[256]; DX.GetHitKeyStateAll(out KeyState[0]); を呼び出すとランタイムエラーが出て プログラムが終了してしまいます。 引数に問題があるのでしょうか?

Page: 1 |

Re: C#でのキー取得 ( No.1 )
名前:Will 日時:2007/10/05 10:07

DX.GetHitKeyStateAll(out c[0]); ではないですか?
Re: C#でのキー取得 ( No.2 )
名前:Dq 日時:2007/10/06 01:52

申し訳ありません、その書き方が正しいです。 その上でランタイムエラーが出ている状態です。
Re: C#でのキー取得 ( No.3 )
名前:Dq 日時:2007/10/16 02:50

Dxlibのcppコードと比較しつつ試行錯誤して ようやく解決しました。 C#のchar型はunicodeを扱うため 8bitのデータでは無くなっているのが原因でした。 これが正しいとは限りませんが、DxDLL.csを[DllImport("DxLib.dll")] extern static int dx_GetHitKeyStateAll(out byte KeyStateBuf); public static int GetHitKeyStateAll(out byte KeyStateBuf) { return dx_GetHitKeyStateAll(out KeyStateBuf); } } と書き直した上で、 byte[] c = new byte[256]; DX.GetHitKeyStateAll(out c[0]); と書く事で無事C#でキー入力を得られました。
Re: C#でのキー取得 ( No.4 )
名前:Dq 日時:2007/10/16 02:53

また正しく書けていない。失礼しました。 DxDLL.csの修正は [DllImport("DxLib.dll")] extern static int dx_GetHitKeyStateAll(out byte KeyStateBuf); public static int GetHitKeyStateAll(out byte KeyStateBuf) { return dx_GetHitKeyStateAll(out KeyStateBuf); } ですね。
Re: C#でのキー取得 ( No.5 )
名前:管理人 日時:2007/10/25 01:54

Dqさん始めまして、DXライブラリの管理人です。 どうもご迷惑お掛けしました。 ダウンロードページにアップしてあるC#用DXライブラリも 修正しておきました。

Page: 1 |