CodeGuru
Earthweb Search
Forums Wireless Jars Gamelan Developer.com
CodeGuru Navigation
RSS Feeds

RSSAll

RSSVC++/C++

RSS.NET/C#

RSSVB

See more EarthWeb Network feeds

follow us on Twitter

Member Sign In
User ID:
Password:
Remember Me:
Forgot Password?
Not a member?
Click here for more information and to register.

Become a Marketplace Partner

jobs.internet.com

internet.commerce
Partners & Affiliates
















Home >> Visual C++ / C++ >> Controls >> Treeview Control >> Classes


A Print Enabled Tree Control
Rating:

Mike Wild (view profile)
August 6, 1998


(continued)




I realized a lot of developers are interested in code for printing CTreectrl. I was in the same situation and tried a lot of different ways, but every approach had its disadvantage.

The simplest solution seemed in the call of CWnd::Print(...), but this only prints the visible part of the control, which was not what I wanted. One way to make this approach work was to scroll the TreeCtrl in the printing code from the start to the end of the control, calling CWnd::Print(...) after every scroll, which was a little bit weird for me. Additionally I wanted as much flexibility in my code as possible, which means printing with or without icons, lines, buttons.

That's why I began to implement the whole stuff by myself, following the next few steps:

Init ImageList:

In my opinion and my understanding of OOD the Treecontrol should be able to display itself, that's why it should have the imagelist and initialize it.

Paging:

This is also done by hand, like everything else. Iterate through the tree and create an array with the PagingInfos:

struct PagingInfos
{
   HTREEITEM    m_hStartItem;
   int          m_iNumberOfItems;
};

DrawTreeCtrl:

Iterate through the tree and print every node by code, including lines and buttons.

Imagelist vs DIB:

In an additional step I wanted to print the tree in color. This was easy for text, but not for the icons. I tried a lot to convert the imagelist to DIB, but what I really needed was a method, which gives back the DIB of one icon, not of the whole Imagelist.

Bugs and Improvements:

  • Compiling the release version is now working too.
  • If the convertion to DIB failes the program gives back an errorcode and prints without graphic( see Comment below).

Comment:

After the first release, I received some emails about problems with the example project, which was crashing under some conditions. My problem is, that every time I tested my code under the described conditions it worked fine. What I've done now, was to extend the project with more errorhandling and it would be nice, if all users which are receiving errorcodes, could report me the following informations:

  • Errorcode
  • OS with servicepack
  • IDE with servicepack
  • Optional: Which conversion failed

Please report all bugs and improvements to me, thanks and enjoy it.

Downloads

  • printable_ctreectrl.zip - Download demo project - 33KB

    Tools:
    Add www.codeguru.com to your favorites
    Add www.codeguru.com to your browser search box
    IE 7 | Firefox 2.0 | Firefox 1.5.x
    Receive news via our XML/RSS feed







  • RATE THIS ARTICLE:   Excellent  Very Good  Average  Below Average  Poor  

    (You must be signed in to rank an article. Not a member? Click here to register)

    Latest Comments:
    Broken Link - anand_study (08/30/2007)
    Fine. - Legacy CodeGuru (01/16/2004)
    Bugs and Updates - Legacy CodeGuru (07/10/2002)
    PRINT THE TREE CONTROL & ALL ELEMENTS UNDER ALL NODES - Legacy CodeGuru (05/30/2002)
    Need help for using CWnd::Print - Legacy CodeGuru (11/26/2001)

    View All Comments
    Add a Comment:
    Title:
    Comment:
    Pre-Formatted: Check this if you want the text to display with the formatting as typed (good for source code)



    (You must be signed in to comment on an article. Not a member? Click here to register)