Results 1 to 5 of 5

Thread: [RESOLVED] Make Treeview Using API

  1. #1

    Thread Starter
    Member
    Join Date
    Jul 2016
    Posts
    33

    Resolved [RESOLVED] Make Treeview Using API

    What is the code to make and position a Treeview using API? I also want to put specific text into each of the nodes. Thank you.

  2. #2
    Default Member Bonnie West's Avatar
    Join Date
    Jun 2012
    Location
    InIDE
    Posts
    4,060

    Re: Make Treeview Using API

    Quote Originally Posted by ChildOfTheKing View Post
    What is the code to make ...
    Quote Originally Posted by MSDN
    How to Create a Tree-View Control


    To create a tree-view control, use the CreateWindowEx function, specifying the WC_TREEVIEW value for the window class. The tree-view window class is registered in the application's address space when the common control DLL is loaded. To ensure that the DLL is loaded, use the InitCommonControls function.
    Quote Originally Posted by ChildOfTheKing View Post
    ... and position a Treeview using API?
    Quote Originally Posted by MSDN
    Size and Position Functions

    After creating a window, an application can set the window's size or position by calling one of several different functions, including SetWindowPlacement, MoveWindow, SetWindowPos, and DeferWindowPos. SetWindowPlacement sets a window's minimized position, maximized position, restored size and position, and show state. The MoveWindow and SetWindowPos functions are similar; both set the size or position of a single application window. The SetWindowPos function includes a set of flags that affect the window's show state; MoveWindow does not include these flags. Use the BeginDeferWindowPos, DeferWindowPos, and EndDeferWindowPos functions to simultaneously set the position of a number of windows, including the size, position, position in the z-order, and show state.
    Quote Originally Posted by ChildOfTheKing View Post
    I also want to put specific text into each of the nodes.
    Quote Originally Posted by MSDN
    Item Labels

    You typically specify the text of an item's label when adding the item to the tree-view control. The TVM_INSERTITEM message includes a TVITEM structure that defines the item's properties, including a string containing the text of the label.
    Quote Originally Posted by MSDN
    TVM_SETITEM message

    The TVM_SETITEM message sets some or all of a tree-view item's attributes. You can send this message explicitly or by using the TreeView_SetItem macro.

    . . .

    Remarks

    The hItem member of the TVITEM or TVITEMEX structure identifies the item, and the mask member specifies which attributes to set.


    See this post for a VB6 example.
    On Local Error Resume Next: If Not Empty Is Nothing Then Do While Null: ReDim i(True To False) As Currency: Loop: Else Debug.Assert CCur(CLng(CInt(CBool(False Imp True Xor False Eqv True)))): Stop: On Local Error GoTo 0
    Declare Sub CrashVB Lib "msvbvm60" (Optional DontPassMe As Any)

  3. #3

    Thread Starter
    Member
    Join Date
    Jul 2016
    Posts
    33

    Re: Make Treeview Using API

    Here is what I have so far. It shows a Treeview, but I can't figure out how to make "Child 1" a child of "Root 1". Suggestions?

    Here is the code for the Main Form:

    Code:
    Option Explicit
    
    Private Sub Form_Load()
    
      Call InitComctl32(ICC_TREEVIEW_CLASSES)
       
      qwTreeviewHandle = CreateWindowEx(0, WC_TREEVIEW, "Tree View", _
        WS_VISIBLE Or WS_CHILD Or WS_BORDER Or TVS_HASBUTTONS Or TVS_HASLINES Or TVS_LINESATROOT, _
        15, 15, 200, 200, hwnd, 0, App.hInstance, 0)
    
      Call SendMessage(qwTreeviewHandle, TVM_SETBKCOLOR, 0, ByVal RGB(255, 255, 255)) ' White
      
      Dim uTVIS As TVInsertStruct
      uTVIS.hParent = TVI_ROOT
      uTVIS.Item.pszText = "Root1"
      uTVIS.Item.mask = TVIF_TEXT
      Call SendMessage(qwTreeviewHandle, TVM_INSERTITEM, 0&, uTVIS)
      
      uTVIS.Item.pszText = "Child 1"
      Call SendMessage(qwTreeviewHandle, TVM_INSERTITEM, 0&, uTVIS)
      
    End Sub
    Here is the Code for the Module:
    Code:
    Option Explicit
    
    Public qwTreeviewHandle As Long
    
    Public Const CCM_FIRST = &H2000
    Public Const CCM_SETBKCOLOR = (CCM_FIRST + 1)
    Public Const CCM_SETCOLORSCHEME As Long = (CCM_FIRST + 2)
    Public Const CCM_GETCOLORSCHEME As Long = (CCM_FIRST + 3)
    Public Const CCM_SETUNICODEFORMAT As Long = (CCM_FIRST + 5)
    Public Const CCM_GETUNICODEFORMAT As Long = (CCM_FIRST + 6)
    Public Const COLOR_WINDOW As Long = 5
    Public Const COLOR_WINDOWTEXT As Long = 8
    Public Const GWL_STYLE As Long = (-16)
    Public Const ICC_TREEVIEW_CLASSES As Long = &H2 'treeview, tooltips
    Public Const TV_FIRST As Long = &H1100
    Public Const TVGN_ROOT As Long = &H0
    Public Const TVGN_NEXT As Long = &H1
    Public Const TVGN_PREVIOUS As Long = &H2
    Public Const TVGN_PARENT As Long = &H3
    Public Const TVGN_CHILD As Long = &H4
    Public Const TVGN_FIRSTVISIBLE As Long = &H5
    Public Const TVGN_NEXTVISIBLE As Long = &H6
    Public Const TVGN_PREVIOUSVISIBLE As Long = &H7
    Public Const TVGN_DROPHILITE As Long = &H8
    Public Const TVGN_CARET As Long = &H9
    Public Const TVHT_NOWHERE As Long = &H1
    Public Const TVHT_ONITEMICON As Long = &H2
    Public Const TVHT_ONITEMLABEL As Long = &H4
    '        Public Const TVHT_ONITEM = (TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON)
    Public Const TVHT_ONITEMINDENT As Long = &H8
    Public Const TVHT_ONITEMBUTTON As Long = &H10
    Public Const TVHT_ONITEMRIGHT As Long = &H20
    Public Const TVHT_ONITEMSTATEICON As Long = &H40
    Public Const TVHT_ABOVE As Long = &H100
    Public Const TVHT_BELOW As Long = &H200
    Public Const TVHT_TORIGHT As Long = &H400
    Public Const TVHT_TOLEFT As Long = &H800
    Public Const TVI_ROOT As Long = &HFFFF0000
    Public Const TVI_FIRST As Long = &HFFFF0001
    Public Const TVI_LAST As Long = &HFFFF0002
    Public Const TVI_SORT As Long = &HFFFF0003
    Public Const TVIF_TEXT As Long = &H1
    Public Const TVIF_IMAGE As Long = &H2
    Public Const TVIF_PARAM As Long = &H4
    Public Const TVIF_STATE As Long = &H8
    Public Const TVIF_HANDLE As Long = &H10
    Public Const TVIF_SELECTEDIMAGE As Long = &H20
    Public Const TVIF_CHILDREN As Long = &H40
    Public Const TVIF_DI_SETITEM As Long = &H1000
    Public Const TVIS_BOLD  As Long = &H10
    Public Const TVM_INSERTITEM As Long = (TV_FIRST + 0)
    Public Const TVM_INSERTITEMA As Long = (TV_FIRST + 0)
    Public Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
    Public Const TVM_EXPAND As Long = (TV_FIRST + 2)
    Public Const TVM_GETITEMRECT As Long = (TV_FIRST + 4)
    Public Const TVM_GETCOUNT As Long = (TV_FIRST + 5)
    Public Const TVM_GETINDENT As Long = (TV_FIRST + 6)
    Public Const TVM_SETINDENT As Long = (TV_FIRST + 7)
    Public Const TVM_GETIMAGELIST As Long = (TV_FIRST + 8)
    Public Const TVM_SETIMAGELIST As Long = (TV_FIRST + 9)
    Public Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
    Public Const TVM_SELECTITEM As Long = (TV_FIRST + 11)
    Public Const TVM_GETITEMA As Long = (TV_FIRST + 12)
    Public Const TVM_GETITEM As Long = (TV_FIRST + 12)
    Public Const TVM_SETITEMA As Long = (TV_FIRST + 13)
    Public Const TVM_SETITEM As Long = (TV_FIRST + 13)
    Public Const TVM_EDITLABELA As Long = (TV_FIRST + 14)
    Public Const TVM_GETEDITCONTROL As Long = (TV_FIRST + 15)
    Public Const TVM_GETVISIBLECOUNT As Long = (TV_FIRST + 16)
    Public Const TVM_HITTEST As Long = (TV_FIRST + 17)
    Public Const TVM_CREATEDRAGIMAGE As Long = (TV_FIRST + 18)
    Public Const TVM_SORTCHILDREN As Long = (TV_FIRST + 19)
    Public Const TVM_ENSUREVISIBLE As Long = (TV_FIRST + 20)
    Public Const TVM_SORTCHILDRENCB As Long = (TV_FIRST + 21)
    Public Const TVM_ENDEDITLABELNOW As Long = (TV_FIRST + 22)
    Public Const TVM_GETISEARCHSTRINGA As Long = (TV_FIRST + 23)
    Public Const TVM_SETTOOLTIPS As Long = (TV_FIRST + 24)
    Public Const TVM_GETTOOLTIPS As Long = (TV_FIRST + 25)
    Public Const TVM_SETINSERTMARK As Long = (TV_FIRST + 26)
    Public Const TVM_SETITEMHEIGHT As Long = (TV_FIRST + 27)
    Public Const TVM_GETITEMHEIGHT As Long = (TV_FIRST + 28)
    Public Const TVM_SETBKCOLOR As Long = (TV_FIRST + 29)
    Public Const TVM_SETTEXTCOLOR As Long = (TV_FIRST + 30)
    Public Const TVM_GETBKCOLOR As Long = (TV_FIRST + 31)
    Public Const TVM_GETTEXTCOLOR As Long = (TV_FIRST + 32)
    Public Const TVM_SETSCROLLTIME As Long = (TV_FIRST + 33)
    Public Const TVM_GETSCROLLTIME As Long = (TV_FIRST + 34)
    Public Const TVM_SETINSERTMARKCOLOR As Long = (TV_FIRST + 37)
    Public Const TVM_GETINSERTMARKCOLOR As Long = (TV_FIRST + 38)
    Public Const TVM_GETITEMSTATE As Long = (TV_FIRST + 39)
    Public Const TVM_SETLINECOLOR As Long = (TV_FIRST + 40)
    Public Const TVM_GETLINECOLOR As Long = (TV_FIRST + 41)
    Public Const TVM_MAPACCIDTOHTREEITEM As Long = (TV_FIRST + 42)
    Public Const TVM_MAPHTREEITEMTOACCID As Long = (TV_FIRST + 43)
    Public Const TVM_INSERTITEMW As Long = (TV_FIRST + 50)
    Public Const TVM_GETITEMW As Long = (TV_FIRST + 62)
    Public Const TVM_SETITEMW As Long = (TV_FIRST + 63)
    Public Const TVM_GETISEARCHSTRINGW As Long = (TV_FIRST + 64)
    Public Const TVM_EDITLABELW As Long = (TV_FIRST + 65)
    Public Const TVM_SETUNICODEFORMAT As Long = CCM_SETUNICODEFORMAT
    Public Const TVM_GETUNICODEFORMAT As Long = CCM_GETUNICODEFORMAT
    
    Public Const TVS_HASBUTTONS As Long = &H1
    Public Const TVS_HASLINES As Long = &H2
    Public Const TVS_LINESATROOT As Long = &H4
    Public Const TVS_DISABLEDRAGDROP As Long = &H10
    Public Const TVS_SHOWSELALWAYS As Long = &H20
    Public Const TVS_RTLREADING As Long = &H40
    Public Const TVS_NOTOOLTIPS As Long = &H80
    Public Const TVS_CHECKBOXES As Long = &H100
    Public Const TVS_TRACKSELECT As Long = &H200
    Public Const TVS_SINGLEEXPAND As Long = &H400
    Public Const TVS_FULLROWSELECT As Long = &H1000
    Public Const TVS_NOSCROLL As Long = &H2000
    Public Const TVS_NONEVENHEIGHT As Long = &H4000
    
    Public Const WC_TREEVIEW = "SysTreeView32"
    Public Const WS_BORDER As Long = &H800000
    Public Const WS_CHILD As Long = &H40000000
    Public Const WS_VISIBLE As Long = &H10000000
    
    Public Type TVItemEx
      mask As Long
      hItem As Long
      State As Long
      stateMask As Long
      pszText As String
      cchTextMax As Long
      iImage As Long
      iSelectedImage As Long
      cChildren As Long
      lParam As Long
      iIntegral As Long
    End Type
    
    Public Type TVInsertStruct
      hParent As Long
      hInsertAfter As Long
      Item As TVItemEx
    End Type
    
    Public Declare Sub InitCommonControls Lib "comctl32" ()
      
    Public Declare Function InitCommonControlsEx Lib "comctl32" _
          (lpInitCtrls As tagINITCOMMONCONTROLSEX) As Boolean
    
    Public Type tagINITCOMMONCONTROLSEX
       dwSize As Long
       dwICC As Long
    End Type
    
    Public Declare Function CreateWindowEx Lib "user32" _
       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, _
       lpParam As Any) As Long
       
    Public Declare Function SendMessage Lib "user32" _
       Alias "SendMessageA" _
      (ByVal hwnd As Long, _
       ByVal wMsg As Long, _
       ByVal wParam As Long, _
       lParam As Any) As Long
    
    Public Function InitComctl32(dwFlags As Long) As Boolean
    
       Dim icc As tagINITCOMMONCONTROLSEX
       
       On Error GoTo Err_OldVersion
      
       With icc
          .dwSize = Len(icc)
          .dwICC = dwFlags
       End With
         
       InitComctl32 = InitCommonControlsEx(icc)
       Exit Function
    
    Err_OldVersion:
       InitCommonControls
       
    End Function

  4. #4

    Thread Starter
    Member
    Join Date
    Jul 2016
    Posts
    33

    Re: Make Treeview Using API

    Here is the Treeview:

    Name:  APIExampleTreeview.jpg
Views: 380
Size:  7.2 KB

  5. #5

    Thread Starter
    Member
    Join Date
    Jul 2016
    Posts
    33

    Re: Make Treeview Using API

    OK. I figured out the solution to my own problem. The following is the Main Form code that changed:

    Code:
      Dim qwRootItem As Long
      qwRootItem = SendMessage(qwTreeviewHandle, TVM_INSERTITEM, 0&, uTVIS)
      
      uTVIS.hParent = qwRootItem
      uTVIS.Item.pszText = "Child 1"
      Call SendMessage(qwTreeviewHandle, TVM_INSERTITEM, 0&, uTVIS)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width