トップページ > 過去ログ > 記事閲覧
MakeKeyInputの不具合について
名前:PATOLE 日時: 2012/11/28 22:32

お世話になっております。 いつもDXライブラリを使用させていただいております、PATOLEと申します。 この度、DXライブラリ関数の MakeKeyInputを使用している時に不具合と感じられたことがありましたので報告させていただきます。 これは、MakeKeyInputのサンプルプログラムでも再現が可能です。 これらを使用すると、クリップボードにある文字列を 『CTRL + V』でペーストすることができますが ペーストする時にMakeKeyInputで指定した文字数よりも多い文字列がペーストされた場合 まだ入力が完了していないにもかかわらず CheckKeyInput関数から1が返ってきます。 お手数ですが、確認いただければ幸いです。

Page: 1 |

Re: MakeKeyInputの不具合について ( No.1 )
名前:Will 日時:2012/11/29 16:22

サンプルソースで試してみましたが再現しませんでした。 ペーストする文字列の最後が改行の場合はCheckKeyInputが1になりますが、 その場合でも最後の文字まで入力されて改行で1になるので、 > 入力が完了していないにもかかわらずCheckKeyInput関数から1が返ってきます。 という現象は確認できませんでした。 環境:Win7Pro、Visual Studio2010
Re: MakeKeyInputの不具合について ( No.2 )
名前:PATOLE 日時:2012/11/29 20:59

Willさま 失礼しました。こちらの環境でも試したところ おっしゃるとおり、『改行』が含まれていた場合に発生するようです。 MakeKeyInputで指定した文字数は関係ないようでした。申し訳ないです。 これは仕様なのでしょうか? 改行が含まれている場合は、CTRL + Vを押した時点で エンターキーを押下していないにも関わらず CheckKeyInputから1が返ってくるのが少し疑問なのですが……。
Re: MakeKeyInputの不具合について ( No.3 )
名前:Will 日時:2012/11/30 13:44

管理人さんがどうお考えかはわかりませんが、一般的にエンターキー=改行ですから私はさほどおかしい動作とは思いません。 「キーを押された」かではなく、キーを押した結果「入力された文字」で判断していたら 見分ける術がないと思います。 そもそも、KeyのInputを待つ関数ですから文字列データのコピペしている(=文字をキー入力していない)時点で、 想定外の使用方法だといえなくもありません。 PATOLEさんの言い回しを真似れば 「文字キーを押していないのにペーストによって文字入力ができてしまうのはおかしいと思います」 とね。(極論ですけど) ま、MakeKeyInputで改行コードによって終了する/しないを設定できればベストとは思いますが、 改行以外のタブ等の制御コードを含む文字列をペーストすると思わぬ動作をするかもしれないですね。
Re: MakeKeyInputの不具合について ( No.4 )
名前:管理人 日時:2012/12/02 04:55

仕様というか、想定外だったので、とりあえずコピー&ペーストした文字列の中に 改行文字が含まれていても文字列入力が終了しないようにしました よろしければお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) > Willさん 私も「勝手に文字入力されていたら判別の仕様が無いな」と思っていたのですが、 ソフトに飛んでくるメッセージは「CTAL + V された」という情報だけで、 実際にクリップボードから文字を引っ張ってくる処理はDXライブラリ内にあったので そこで改行文字を弾くことができました MakeKeyInput の引数を追加することも考えたのですが、コピペした文字列の中に 改行文字が合って、それが原因で入力が終了してしまっても問題ない( or 都合が良い ) 状況はあまりなさそうだったので、引数は追加せずにしました
Re: MakeKeyInputの不具合について ( No.5 )
名前:PATOLE(解決済み) 日時:2012/12/02 11:43

管理人さま ありがとうございます! 無事に問題を解決することができました。 Willさんも、意見ありがとうございました。

Page: 1 |