- - PR -
Win98とWinXPで動作が異なる
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-16 13:04
同じ内容の投稿がGDNJにもありましたが、 もしその投稿がくろすけさんなら、 同じようにフィードバックしてくださいね。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2004-01-21 08:52
根本的な解決ができておりませんが、途中報告します。
Windows98の場合、KeyPressイベントで受け取れるKeyPressEventArgs.KeyChar が、半角英数カナの場合はご指摘頂いたようにUNICODEになっており、SJISにコンバート することにより解決したかに見えました。 しかし全角文字を入力すると、KeyPressイベントが2回走ってしまいます。 1回目のイベントでは、KeyCharは3F固定のようです。この辺の法則を使って無理矢理 でも例外ロジックにて対応しようと思っています。 | ||||
|
投稿日時: 2004-01-21 09:25
くろすけさん、お早うございます。
TextChanged イベントで文字列を1文字ずつなめて処理する、ってのはナシですか? これならコピペにも対応出来ますし...。 | ||||
|
投稿日時: 2004-01-21 09:39
きくちゃんさん、おはようございます。
これだけハマってしまうと、本当にそう思います。 内情を申しますと、FormのKeyPressで入力制御を行っているVB6資産が 大量にありまして、何とか同じイベント処理にてできないかとあがいて おります...。 | ||||
|
投稿日時: 2004-01-21 14:57
こんにちは
>Windows98の場合、KeyPressイベントで受け取れるKeyPressEventArgs.KeyChar >が、半角英数カナの場合はご指摘頂いたようにUNICODEになっており、SJISにコンバート >することにより解決したかに見えました。 関数の仕様を見たのですががもともとKeyCharにはUniCodeがはいるのが正しいみたいです。 if( e.KeyChar == (char)'ア' ) e.Handled = true;<-★ ただし上のコードをWindows2000環境で試してみた所「★」の処理は通るのですが イベントはキャンセルされないみたいです。 なのでもしかするとXPでも98でも上のコードなら「★」のところの処理を通るかも しれません。 ただイベントがキャンセルできないことがあるので、やはりきくちゃんさんの言う通り TextChanged イベントで処理するのが無難かもしれません。 [ メッセージ編集済み 編集者: ゆうじゅん 編集日時 2004-01-21 14:59 ] |