ツールバーのイメージに使用
ToolStrip のボタンはデフォルトでイメージな為、
アイコン画像を用意する事が必要になります。
既存のシステムファイル( Shell32.dll 等 ) に含まれるアイコンを使用できます
' ******************************************************
' アイコンの取得
' ******************************************************
<DllImport("shell32.dll")> _
Public Shared Function _
ExtractIconEx( _
ByVal lpszExeFileName As String, _
ByVal nIconIndex As Integer, _
ByVal phiconLarge As System.IntPtr(), _
ByVal phiconSmall As System.IntPtr(), _
ByVal nIcons As UInt32) As UInt32
End Function
' ******************************************************
' フォームの初期化
' ******************************************************
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "IME(Input Method Editor) API のチェック"
Dim hL As System.IntPtr() = New System.IntPtr(1) {}
Dim hS As System.IntPtr() = New System.IntPtr(1) {}
ExtractIconEx("SHELL32.dll", 22, hL, hS, 1)
Me.品詞の取得.Image = (System.Drawing.Icon.FromHandle(hS(0))).ToBitmap()
ExtractIconEx("SHELL32.dll", 68, hL, hS, 1)
Me.登録.Image = (System.Drawing.Icon.FromHandle(hS(0))).ToBitmap()
End Sub
ExtractIconEx は、一度に複数のアイコンハンドルを取得する事ができます
( 大きいアイコンと小さいアイコンの両方 )。
もちろん、↑例のように一つのみ取得する場合も使い方は同じです。
但しこの API は一覧を取得する事を想定しているので、
nIconIndex パラメータで -1 を指定し、phiconLarge と phiconSmall
の両方のパラメータでNULL を指定すると、指定されたファイル内の
アイコンの総数が返ります
取得された値は Windows API の「ハンドル」なので、スタティックな
System.Drawing.Icon.FromHandle メソッドで使用可能な Icon オブジェクト
に変換します。その後、ToBitmap メソッドで Image プロパティにセット
可能な Bitmap オブジェクトに変換します。
|
|