新しいウィンドウを作成する
Declare Function CreateWindowEx Lib "user32.dll" Alias "CreateWindowExA" _
(ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, _
ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, _
ByVal nHeight As Long, ByVal hwndParent As Long, ByVal hMenu As Long, _
ByVal hInstance As Long, ByVal lpParam As Long) As Long
Declare Function CreateWindowEx Lib "user32.dll" Alias "CreateWindowExA" _
(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 Integer, ByVal hMenu As Integer, _
ByVal hInstance As Integer, ByVal lpParam As Integer) As Integer
HWND CreateWindowEx(
DWORD dwExStyle,
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam
);
引数
dwExStyle
拡張ウィンドウスタイルを示す定数の組み合わせlpClassName
クラス名lpWindowName
ウィンドウタイトルdwStyle
(フォームのときキャプション)
ウィンドウスタイルを示す定数の組み合わせx
ウィンドウの左上隅のX座標y
同、Y座標nWidth
同、幅nHeight
同、高さhWndParent
親ウィンドウのハンドル(親がないとき0)hMenu
メニューハンドル(0可)hInstance
モジュールのインスタンスハンドルlpParam
作成したウィンドウに渡すデータへのポインタ戻り値
正常終了のとき 作成したウィンドウのハンドル拡張ウィンドウスタイルの定数
エラーのとき 0
ウィンドウスタイルの定数
WS_EX_APPWINDOW = &H40000 アイコン化時,タスクバーに表示する
WS_EX_CLIENTEDGE = &H200 クライアント領域が凹形の3D表示
WS_EX_CONTEXTHELP = &H400 キャプションバーにヘルプボタンを付ける
WS_EX_CONtrOLPARENT = &H10000 [Tab]キーでコントロール間を移動可能
WS_EX_DLGMODALFRAME = &H1 二重罫線を持つ
WS_EX_MDICHILD = &H40 MDI子ウインドウを作成
WS_EX_LEFT = &H0 左そろえのプロパティを持つ
WS_EX_LEFTSCROLLBAR = &H4000 垂直スクロールバーを左側に付ける
WS_EX_LtrREADING = &H0 テキストの表示は左から右へ(デフォルト)
WS_EX_NOPARENTNOTIFY = &H4 WM_PARENTNOTIFYを無効にする
WS_EX_RIGHT = &H1000 右そろえのプロパティを持つ
WS_EX_RIGHTSCROLLBAR = &H0 垂直スクロールバーを右側に付ける(デフォルト)
WS_EX_STATICEDGE = &H20000 枠線が3D表示(通常、入力を受け付けないことを示す)
WS_EX_TOOLWINDOW = &H80 ツールバー型のスタイル
WS_EX_TOPMOST = &H8 常に手前に表示される
WS_EX_WINDOWEDGE = &H100 枠線が凸形の3D表示
WS_EX_ACCEPTFILES = &H10 ファイルのドロップが可能
WS_EX_RTLREADING = &H2000 テキストの表示は右から左へ(アラビア文字など)
WS_EX_trANSPARENT = &H20 透明なウインドウを作成(一時的な用途に使う)
WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE Or WS_EX_CLIENTEDGE)
WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE Or WS_EX_TOOLWINDOW Or WS_EX_TOPMOST)
WS_BORDER = &H800000 フォームの枠線があるサンプル
WS_CAPTION = &HC00000 WS_BORDER Or WS_DLGFRAME
WS_CHILD = &H40000000 親ウインドウを持つコントロール(子ウインドウ)を作成する
WS_CHILDWINDOW = (WS_CHILD) 子ウインドウ
WS_CLIPCHILDREN = &H2000000 フォームの更新時にコントロールの再描画を抑制する
WS_CLIPSIBLINGS = &H4000000 コントロールの更新時に他のコントロールの再描画を抑制する
WS_DISABLED = &H8000000 Enabled = False
WS_DLGFRAME = &H400000 リサイズできない枠線を持つ
WS_GROUP = &H20000 コントロール グループの最初のコントロールである
WS_HSCROLL = &H100000 水平スクロールバーがある
WS_MAXIMIZE = &H1000000 初期状態で最大化する
WS_MAXIMIZEBOX = &H10000 最大化ボタンを持つ
WS_MINIMIZE = &H20000000 初期状態で最小化する
WS_MINIMIZEBOX = &H20000 最小化ボタンを持つ
WS_ICONIC = WS_MINIMIZE WS_MINIMIZE と同じ
WS_POPUP = &H80000000 ポップアップ型ウインドウ
WS_SYSMENU = &H80000 システムメニューがある
WS_TABSTOP = &H10000 タブストップ可能
WS_THICKFRAME = &H40000 リサイズ可能な枠線を持つ
WS_VISIBLE = &H10000000 Visibleである
WS_VSCROLL = &H200000 垂直スクロールバーがある
WS_OVERLAPPED = &H0 フォーム枠線とキャプションバーがある
WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or _
WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
標準的なスタイル
WS_POPUPWINDOW = (WS_POPUP Or WS_BORDER Or WS_SYSMENU)
ポップアップ型の標準的なスタイル
WS_SIZEBOX = WS_THICKFRAME WS_THICKFRAME と同じ
WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW
32ビット版ではこれを使うことが多い
WS_TILED = WS_OVERLAPPED WS_OVERLAPPED のと同じ
ダウンロード(CreateWindowEx.lzh 2.75kB)Dim hButton As Long
Private Sub Form_Load()
Dim rc As Long
'API関数使う単位はピクセルなので変更する
Me.ScaleMode = vbPixels
hButton = CreateWindowEx(0, "button", "ボタンだよ", WS_CHILD Or BS_PUSHBUTTON Or WS_VISIBLE, _
(Me.ScaleWidth - 100) \ 2, (Me.ScaleHeight - 100) \ 2, 100, 36, Me.hWnd, 0, 0, 0)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call DestroyWindow(hButton)
End Sub
,/tr>