アップダウンコントロールの作成(U) <TOP>
CreateWindowExでアップダウンコントロールを作成します。
CreateWindowEx ウインドウ(コントロール)を作成
DestroyWindow CreateWindowExの解放
InitCommonControls コモンコントロールのウィンドウクラスを登録して初期化
SetParent 指定された子ウィンドウの親ウィンドウを変更
'================================================================ '= アップダウンコントロールをコードで作成(U) '= (CreateWindowEx5.bas) '================================================================ #include "Windows.bi" #define UPDOWN_CLASS "msctls_updown32" #define WS_CHILD &H40000000 '親ウィンドウを持つコントロール(子ウィンドウ)を作成する #define WS_VISIBLE &H10000000 '可視状態のウィンドウを作成する #define UDS_AUTOBUDDY &H10 'Zオーダが一つ前のウィンドウを自動的にバディとする #define UDS_HORZ &H40 '水平アップダウンにする ' ウィンドウ(コントロール)を作成 Declare Function Api_CreateWindowEx& Lib "user32" Alias "CreateWindowExA" (ByVal ExStyle&, ByVal ClassName$, ByVal WinName$, ByVal Style&, ByVal x&, ByVal y&, ByVal nWidth&, ByVal nHeight&, ByVal Parent&, ByVal Menu&, ByVal Instance&, Param&) ' CreateWindowExの解放 Declare Function Api_DestroyWindow& Lib "user32" Alias "DestroyWindow" (ByVal hWnd&) ' コモンコントロールライブラリからコモンコントロールのウィンドウクラスを登録して初期化 Declare Sub Api_InitCommonControls Lib "comctl32" Alias "InitCommonControls" () ' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) ' 指定された子ウィンドウの親ウィンドウを変更 Declare Function Api_SetParent& Lib "user32" Alias "SetParent" (ByVal hWndChild&, ByVal hWndNewParent&) Var Shared Text1 As Object Var Shared Edit1 As Object Var Shared Edit2 As Object Var Shared Edit3 As Object Var Shared Button1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Edit2.Attach GetDlgItem("Edit2") : Edit2.SetFontSize 14 Edit3.Attach GetDlgItem("Edit3") : Edit3.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared UDControl As Long '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long Api_InitCommonControls 'TextBoxに作成 UDControl = Api_CreateWindowEx(0, UPDOWN_CLASS, ByVal 0, WS_VISIBLE Or WS_CHILD, Text1.GetWidth - 20, 0, 5, 20, GethWnd, 0, GethInst, ByVal 0) Ret = Api_SetParent(UDControl, Text1.GethWnd) 'EditBoxに作成(垂直) UDControl = Api_CreateWindowEx(0, UPDOWN_CLASS, ByVal 0, WS_VISIBLE Or WS_CHILD, Edit1.GetWidth - 20, 0, 5, 20, GethWnd, 0, GethInst, ByVal 0) Ret = Api_SetParent(UDControl, Edit1.GethWnd) 'EditBoxに作成(水平) UDControl = Api_CreateWindowEx(0, UPDOWN_CLASS, ByVal 0, WS_VISIBLE Or WS_CHILD Or UDS_HORZ, 0, Edit2.GetHeight - 14, 66, 10, GethWnd, 0, GethInst, ByVal 0) Ret = Api_SetParent(UDControl, Edit2.GethWnd) 'Form上の指定した位置に作成 UDControl = Api_CreateWindowEx(0, UPDOWN_CLASS, ByVal 0, WS_VISIBLE Or WS_CHILD, 190, 35, 10, 24, GethWnd, 0, GethInst, ByVal 0) End Sub '================================================================ '= '================================================================ Declare Sub MainForm_QueryClose edecl () Sub MainForm_QueryClose() Var Ret As Long Ret = Api_DestroyWindow(UDControl) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End