DOBON.NETプログラミング掲示板過去ログ
変換中のKey取得
題名: 変換中のKey取得
著者: DUNE
日時: 2005/05/20 15:15:02
ID: 10880
この記事の返信元:
(なし)
この記事への返信:
[10888]
Re[1]: 変換中のKey取得
medaka
2005/05/20 17:35:55
[10901]
Re[1]: 変換中のKey取得
ant
2005/05/22 22:07:07
ツリーを表示
環境/言語:[OS : Windows XP Professional / 言語 : Visual Basic .NET / .NET Framework : 1.1]
分類:[.NET]
RichTextBoxを使用して全角かな入力で変換確定前の入力文字(文字の下に変換中の下線がある状態でのKey)を取得したいのですが、ご教授いただけないでしょうか?
詳しいオペレーションとしては、FormにRichTextBoxを貼り付けて、FormのKeyPreviewをTrueに設定した状態で実行し、RichTextBoxへフォーカスを当て
「半角/全角」キーを押下し全角かな入力モードにします。
そこで「あいうえお」などの入力をした際に「あ」→「a」、「い」→「i」
などのKeyが取得できません。(もちろんKeys.AやKeys.Iといった取得も
ダメでした。)
KeyDown、KeyPreview、KeyUpイベントはもちろん、
ProcessDialogKeyをオーバーライドしてKeyコードを取得したり、
RichTextBoxを継承したユーザーコントロールを作成してIsInputKeyを
オーバーライドしてKeyコードを取得したのですが、
変換中のキーボード入力は何を押下しても「Keys.ProcessKey」が取得できる
のみで、どのキーが押下されたのかを判断できません。
よろしくお願いいたします。
題名: Re[1]: 変換中のKey取得
著者: medaka
日時: 2005/05/20 17:35:55
ID: 10888
この記事の返信元:
[10880]
変換中のKey取得
DUNE
2005/05/20 15:15:02
この記事への返信:
(なし)
ツリーを表示
ProcessCmdKey フォームをオーバーライド
その時の msg.LParam.Toint32 を調べると
IME漢字変換中でも拾えるようです
'1' だと 131073
'A' だと 1966081
msg.GetLParamで変換できそうですが私にはわかりません。
気になる・・・
題名: Re[1]: 変換中のKey取得
著者: ant
URL:
http://ant0x.udap.jp/
日時: 2005/05/22 22:07:07
ID: 10901
この記事の返信元:
[10880]
変換中のKey取得
DUNE
2005/05/20 15:15:02
この記事への返信:
[10902]
Re[1]: 変換中のKey取得
DUNE
2005/05/23 12:26:03
ツリーを表示
> KeyDown、KeyPreview、KeyUpイベントはもちろん、
> ProcessDialogKeyをオーバーライドしてKeyコードを取得したり、
> RichTextBoxを継承したユーザーコントロールを作成してIsInputKeyを
> オーバーライドしてKeyコードを取得したのですが、
> 変換中のキーボード入力は何を押下しても「Keys.ProcessKey」が取得できる
変換中の場合はKeyDownイベントが発生したときは実際のKeyCodeは
一旦バッファに入っています。従って、ProcessKey(VK_PROCESSKEY)
しか生成されませんが、KeyUPイベントではKeyCodeに実際の
コードが入っています。従って、KeyUPイベントのKeyCode等を調べれば
"あ"なら"A"が得られると思います。
題名: Re[1]: 変換中のKey取得
著者: DUNE
日時: 2005/05/23 12:26:03
ID: 10902
この記事の返信元:
[10901]
Re[1]: 変換中のKey取得
ant
2005/05/22 22:07:07
この記事への返信:
(なし)
ツリーを表示
medakaさん、 antさん ありがとうございます。
antさんの仰るとおり、KeyUpイベントではKeyCodeが取得できました。
しかし、現状の仕様でキーを押しっぱなしにした場合にKeyCodeが取得できない
のは少々具合が悪い為、やはり「キーを押下したタイミング」でKeyCodeを取得
する方向で考えたいと思います。
medakaさんの仰るように、ProcessCmdKeyの引数であるmsgに一意認識できる
KeyCodeらしきものを確認いたしました。
未だ使用方法がよくわからない為、そのあたりを調べていきたいと思います。
お二方共、ありがとうございました。大変参考になりました。
お気づきの点がございましたら、また力添えをお願いいたします。
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
RichTextBoxを使用して全角かな入力で変換確定前の入力文字(文字の下に変換中の下線がある状態でのKey)を取得したいのですが、ご教授いただけないでしょうか?
詳しいオペレーションとしては、FormにRichTextBoxを貼り付けて、FormのKeyPreviewをTrueに設定した状態で実行し、RichTextBoxへフォーカスを当て
「半角/全角」キーを押下し全角かな入力モードにします。
そこで「あいうえお」などの入力をした際に「あ」→「a」、「い」→「i」
などのKeyが取得できません。(もちろんKeys.AやKeys.Iといった取得も
ダメでした。)
KeyDown、KeyPreview、KeyUpイベントはもちろん、
ProcessDialogKeyをオーバーライドしてKeyコードを取得したり、
RichTextBoxを継承したユーザーコントロールを作成してIsInputKeyを
オーバーライドしてKeyコードを取得したのですが、
変換中のキーボード入力は何を押下しても「Keys.ProcessKey」が取得できる
のみで、どのキーが押下されたのかを判断できません。
よろしくお願いいたします。