リストボックスをフローティング表示          <TOP>


リストボックスをマウスで移動させることができます。

SetWindowLong ウインドウのスタイルなどの情報を設定

GetWindowLong ウインドウのスタイルなどの情報を取得

SetWindowText ウインドウのタイトルを変更

 

 

'================================================================
'= リストボックスをフローティング表示
'=    (FloatListBox.bas)
'================================================================
#include "Windows.bi"

'ウインドウのスタイルなどの情報を設定
Declare Function Api_SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)

'ウインドウのスタイルなどの情報を取得
Declare Function Api_GetWindowLong& Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&)

'ウインドウのタイトルを変更
Declare Function Api_SetWindowText& Lib "user32" Alias "SetWindowTextA" (ByVal hWnd&, ByVal lpstring$)

#define WS_CAPTION &HC00000             'WS_BORDER Or WS_DLGFRAME
#define WS_THICKFRAME &H40000           'サイズ変更境界を持つウィンドウを作成する
#define WS_EX_TOOLWINDOW &H80           'ツールウィンドウを作成
#define GWL_STYLE (-16)                 'ウィンドウスタイルを取得

Var Shared List1 As Object
List1.Attach GetDlgItem("List1") : List1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var Ret As Long
    Var LB_STYLE As Long

    LB_STYLE = Api_GetWindowLong(List1.GethWnd, GWL_STYLE)
    LB_STYLE = LB_STYLE Or WS_EX_TOOLWINDOW
    Ret = Api_SetWindowLong(List1.GethWnd, GWL_STYLE, LB_STYLE)

    LB_STYLE = Api_GetWindowLong(List1.GethWnd, GWL_STYLE)
    LB_STYLE = LB_STYLE Or WS_CAPTION Or WS_THICKFRAME
    Ret = Api_SetWindowLong(List1.GethWnd, GWL_STYLE, LB_STYLE)

    Ret = Api_SetWindowText(List1.GethWnd, "拡張ListBox")
    List1.ResetContent
    For i = 0 To 19
        List1.AddString Trim$(Str$(i))
    Next
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End