CreateWindowEx を使って Control の作成を行う (CreateWindowEx)

user32.dll の CreateWindowEx を用いて、Control の作成を行います。
サンプルのダウンロード

このカテゴリーの先頭へ このページの先頭へ

■サンプルの説明

起動したところ
プログラムが開始すると、画面の左上の方に EditControl を動的に生成します。

このカテゴリーの先頭へ このページの先頭へ

■コード

F0002_CreateWindowEx.vb
Imports System.Runtime.InteropServices
''' <summary>
''' CreateWindowEx(user32.dll)
''' </summary>
Partial Public Class F0002_CreateWindowEx

    ''' <summary>
    ''' CreateWindowExの宣言
    ''' </summary>
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
    Private Shared Function CreateWindowEx( _
                            ByVal dwExStyle As Integer, _
                            ByVal lpClassName As String, _
                            ByVal lpWindowName As String, _
                            ByVal dwStyle As Integer, _
                            ByVal x As Integer, _
                            ByVal y As Integer, _
                            ByVal nWidth As Integer, _
                            ByVal nHeight As Integer, _
                            ByVal hWndParent As IntPtr, _
                            ByVal hMenu As Integer, _
                            ByVal hInstance As Integer, _
                            ByVal lpParam As Integer) _
                            As Integer
    End Function

    ''' <summary>
    ''' DestroyWindow(ウィンドウの破棄)の宣言
    ''' </summary>
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
    Private Shared Function DestroyWindow(ByVal hWnd As Integer) As Integer
    End Function

    'エディットコントロールのハンドル
    Private hEditControl As Integer
    'ウィンドウのスタイルの定数
    Private Const WS_CHILD As Integer = &H40000000    '親コントロールを持つコントロール
    Private Const WS_VISIBLE As Integer = &H10000000  '可視
    Private Const WS_BORDER As Integer = &H800000     '枠線を付ける
    Private Const WS_HSCROLL As Integer = &H100000    '水平スクロールバー
    Private Const WS_VSCROLL As Integer = &H200000    '垂直スクロールバー
    Private Const ES_MULTILINE As Integer = &H4&      'マルチライン

    ''' <summary>
    ''' ロード時のイベント
    ''' </summary>
    Private Sub F0002_CreateWindowEx_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Me.Text = "F0002_CreateWindowEx"

        'スクロールバーがあり、自画面に属す複数行入力可能な EditControl を作成する
        Dim intStyle As Integer = WS_CHILD Or _
                                WS_VISIBLE Or _
                                WS_BORDER Or _
                                WS_HSCROLL Or _
                                WS_VSCROLL Or _
                                ES_MULTILINE

        hEditControl = CreateWindowEx(0, _
                                      "EDIT", _
                                      "", _
                                       WS_CHILD Or WS_VISIBLE Or WS_BORDER Or WS_HSCROLL Or WS_VSCROLL Or ES_MULTILINE, _
                                      10, _
                                      10, _
                                      200, _
                                      200, _
                                      Me.Handle, _
                                      0, _
                                      0, _
                                      0)
    End Sub

    ''' <summary>
    ''' ウィンドウハンドルを破棄する
    ''' </summary>
    Private Sub F0002_CreateWindowEx_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
        DestroyWindow(Me.hEditControl)
    End Sub

End Class
このカテゴリーの先頭へ このページの先頭へ

■参考資料

CreateWindowEx