VB.NET 2015を使用してダイアログっぽい画面を表示するWPFクラスライブラリを作成しようとしています。
画面としてテキストボックス、ボタンを1個づつ配置
xaml
1<Window x:Class="frm" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:CharInput" 7 mc:Ignorable="d" 8 Title="frame"> 9 <Grid> 10 <TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="34" VerticalAlignment="Top" Width="150" Margin="10,59,0,0"/> 11 <Button x:Name="btn" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="90" Height="30"/> 12 </Grid> 13</Window>
ボタン押下時処理
VB
1Public Class frm 2 ' コンテキスト・ハンドルの取得 3 <DllImport("Imm32.dll")> 4 Private Shared Function ImmGetContext(ByVal hWnd As IntPtr) As IntPtr 5 End Function 6 7 <DllImport("Imm32.dll")> 8 Private Shared Function ImmGetCandidateList(ByVal hImc As IntPtr, ByVal deIndex As Integer, lpCandidateList As CANDIDATELIST, ByVal dwBufLen As Integer) As Integer 9 End Function 10 11 Private Structure CANDIDATELIST 12 Dim dwSize As Integer 13 Dim dwStyle As Integer 14 Dim dwCount As Integer 15 Dim dwSelection As Integer 16 Dim dwPageStart As Integer 17 Dim dwPageSize As Integer 18 Dim dwOffset As Integer 19 End Structure 20 21 Private Sub btn_Click(sender As Object, e As RoutedEventArgs) Handles btn.Click 22 Dim imeContext As IntPtr 23 Dim winHandle As IntPtr 24 Dim ioKana As String = "アイ" 25 Dim udtCandidateList As New CANDIDATELIST 26 Dim bufferSize As Integer 27 28 winHandle = New WindowInteropHelper(Me).Handle 29 imeContext = ImmGetContext(winHandle) 30 31 bufferSize = ImmGetCandidateList(imeContext, 0, udtCandidateList, 0) 32 bufferSize = ImmGetCandidateList(imeContext, 0, udtCandidateList, bufferSize) 33End Sub 34End Class
とりあえず試作として上記コードを作りました。
まず「ImmGetContext」でコンテキストを取得し、それを使って「ImmGetCandidateList」で変換候補を取得するなどを行いたいと思います。
ステップ実行で動作を確認したところ、「winHandle」は0以外の数値が入っていますが、「ImmGetContext」の返り値「imeContext」も0以外を期待しましたが0になってしまいます。
何か設定や指定が足りないのでしょうか。
ご教授をお願いいたします。
回答1件
あなたの回答
tips
プレビュー