我用如下函数在一个控件上添加标题栏,以便在运行时可随意移动并放大缩小控件
Option ExplicitPublic Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOZORDER = &H4
Public Const SWP_NOMOVE = &H2
Public Const SWP_DRAWFRAME = &H20
Public Const GWL_STYLE = (-16)
Public Const WS_THICKFRAME = &H40000
Public Const WS_DLGFRAME = &H400000
Public Const WS_POPUP = &H80000000
Public Const WS_CAPTION = &HC00000
Public Const WS_SYSMENU = &H80000
Public Const WS_MINIMIZEBOX = &H20000
Public Const WS_MAXIMIZEBOX = &H10000
Public Const WS_MINIMIZE = &H20000000
Public Const WS_MAXIMIZE = &H1000000
Public Const WS_BORDER = &H800000
Public Const WS_OVERLAPPED = &H0&Public Sub ControlSizeMsg(msgObj As MSFlexGrid)
    
    Dim dwStyle As Long
    dwStyle = GetWindowLong(msgObj.hwnd, GWL_STYLE) Or WS_THICKFRAME Or WS_CAPTION
    dwStyle = SetWindowLong(msgObj.hwnd, GWL_STYLE, dwStyle)
    SetWindowPos msgObj.hwnd, msgObj.Parent.hwnd, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME
    
End Sub我现在还想在这个基础上设置其标题不知可行否?怎么做?请各位大侠指教!

解决方案 »

  1.   

    Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
    再风格改变之后,加上如下语句
    SetWindowText msgObj.hwnd, "你想要的标题"
      

  2.   

    谢谢一楼的。这个问题解决了。
    那我如果再想要在程序中取得用该API在控件上加的标题的话,我想应该是用GetWindowText函数吧?
    但是我用了以后没有什么反应,不知为什么?请指教
      

  3.   

    使用GetWindowText例子
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long    Dim MyStr As String
        MyStr = String(GetWindowTextLength(msgObj.hwnd) + 1, Chr$(0))
        GetWindowText msgObj.hwnd, MyStr, Len(MyStr)
        MsgBox MyStr