Announcement

Collapse
No announcement yet.

wanted: method to get DC of a treeview item

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • wanted: method to get DC of a treeview item

    In order to set the height of the treeview item to accomodate some text, I need to get its DC in order to measure the height required. But I can't find out how to get this DC, except in the NM_CUSTOMDRAW message. But by and by then it is too late, because changing the item's height at this point results in - guess what - more NM_CUSTOMDRAW messages and it all gets a bit blurred.

  • #2
    You don't get a DC for an individual item.

    You only get a DC for a windows clients area (the entire area inside the borders).

    The TVM_GETITEMHEIGHT message can be sent to the control to get the height of items (they should all be the same).

    The TVM_GETITEMRECT can be sent to fill a RECT structure with the coordinates of a specific item. Read the API docs about these messages to learn how to use them correctly.
    Chris Boss
    Computer Workshop
    Developer of "EZGUI"
    http://cwsof.com
    http://twitter.com/EZGUIProGuy

    Comment


    • #3
      Originally posted by Chris Boss View Post
      You don't get a DC for an individual item.
      I think you can get it if you get a window handle to the item via the TVITEMEX.ustatex = %TVIS_EX_HWND.

      The TVM_GETITEMHEIGHT message can be sent to the control to get the height of items (they should all be the same).
      not in my TV. I'm setting up the height with TVITEMEX.iintegral to get a multiple of the standard height.

      The aim is to set TVITEMEX.iintegral to a value which will just allow the desired text to be DRAWTEXTed in. I had assumed that by getting the default font from control, as opposed to the TV item, that I was sizing the RECT wrongly. However, it looks more as if I was just drawing the wrong thing, and the sizing of the item was working correctly.

      Read the API docs about these messages to learn how to use them correctly.
      What else would I use them for?

      Comment


      • #4
        Had to check the latest API docs online.

        You are dealing with an advanced feature only found in the 6.0 common control DLL (requires XP and Themed or Vista).

        It appears it is possible to create a unique window handle for each item. I would guess then you could get a unique DC for that handle. Likely the treeview is creating a unique child window for each item.

        If you create an item using this extended style (TVM_SETITEM) you should be able to get the handle using TVM_GETITEM.

        see: http://msdn.microsoft.com/en-us/libr...59(VS.85).aspx
        Chris Boss
        Computer Workshop
        Developer of "EZGUI"
        http://cwsof.com
        http://twitter.com/EZGUIProGuy

        Comment

        Working...
        X