掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ピクチャボックス上で日本語入力用のIMEを使用可能にするには?(VB.NET) (ID:123195)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以下の段階までは自力で調べ上げコーディングしたのですが目的を達する ことが出来ませんでした。何かバグ取りをお願いするようで心苦しいのですがVB.NETでAPIを使用するのは初めてに等しく、クラスの作成ははじめてなのでどこか間の抜けたこと・考え違いがあると思います。 どうかご教授のほどお願いいたします。 以下のコードでキー入力をしても一切反応が返って来ません。 逆に下から2行目をコメントアウトするとフォーム部分でIMEが起動します。 標準モジュールに '------ウィンドウに関連付けされた入力コンテキストを------- ' 取得する関数の宣言 Declare Function ImmGetContext Lib "imm32.dll" _ (ByVal Handle As IntPtr) As IntPtr '------ウィンドウに関連付けされた入力コンテキストを------- ' 解放する関数の宣言 Declare Function ImmReleaseContext Lib "imm32.dll" _ (ByVal Handle As IntPtr, ByVal hIMC As IntPtr) As Integer '------IMEのオープン・クローズを設定する-------- Declare Function ImmSetOpenStatus Lib "imm32.dll" _ Alias "ImmSetOpenStatus" (ByVal himc As IntPtr, ByVal fOpen As Integer) As Integer を宣言し、 フォームで Private Class MyEditBox Inherits PictureBox Protected Overrides Sub WndProc(ByRef m As Message) '後にメッセージを処理し、オリジナルな描画等をする。 MyBase.WndProc(m) End Sub End Class Private WithEvents MyEdit As New MyEditBox Dim lngImeContext As IntPtr '入力コンテキストの取得用 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load SuspendLayout() 'カスタムPictureBoxの作成 MyEdit.Name = "EditBox" MyEdit.Size = New Size(500, 500) MyEdit.BackColor = Color.White MyEdit.Location = New Point(20, 20) Me.Controls.Add(MyEdit) ResumeLayout() End Sub Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing ' 入力コンテキストを解放 ImmReleaseContext(MyEdit.Handle, lngImeContext) End Sub Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated 'ピクチャボックス上でIME入力を可能にしたい。。 lngImeContext = ImmGetContext(MyEdit.Handle) Dim ret As Integer ret = ImmSetOpenStatus(lngImeContext, True) MyEdit.Focus() ’<ここをコメントアウトするとフォーム左上端にIME入力が可能になる。 End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.