YOU CAN CODE!

 

With The Case Of UCanCode.net  Release The Power OF  Visual C++ !   HomeProducts | PurchaseSupport | Downloads  
Download Evaluation
Pricing & Purchase?
E-XD++Visual C++/ MFC Products
Overview
Features Tour 
Electronic Form Solution
Visualization & HMI Solution
Power system HMI Solution
CAD Drawing and Printing Solution

Bar code labeling Solution
Workflow Solution

Coal industry HMI Solution
Instrumentation Gauge Solution

Report Printing Solution
Graphical modeling Solution
GIS mapping solution

Visio graphics solution
Industrial control SCADA &HMI Solution
BPM business process Solution

Industrial monitoring Solution
Flowchart and diagramming Solution
Organization Diagram Solution

Graphic editor Source Code
UML drawing editor Source Code
Map Diagramming Solution

Architectural Graphic Drawing Solution
Request Evaluation
Purchase
ActiveX COM Products
Overview
Download
Purchase
Technical Support
  General Q & A
Discussion Board
Contact Us

Links

Get Ready to Unleash the Power of UCanCode .NET


UCanCode Software focuses on general application software development. We provide complete solution for developers. No matter you want to develop a simple database workflow application, or an large flow/diagram based system, our product will provide a complete solution for you. Our product had been used by hundreds of top companies around the world!

"100% source code provided! Free you from not daring to use components because of unable to master the key technology of components!"


MFC Sample Code: CList Iterator

 
 By Craig Henderson. 
A simple iteration class for MFC's CList linked list
  • Download source files - 1 Kb

    Introduction

    MFC's CList provides a template linked list implementation and works perfectly adequately. However, iterating through the list can be a little combersome. Code like that below is common place for processing list elements, but the POSITION variable is meaningless and confusing as it always points to the next node rather than the current one.

    POSITION        pos;
    CList<int, int> list;
    
    // add nodes to the list
    
    pos = list.GetHeadPosition();
    while (pos)
    {
        int nElement;
    
        nElement = list.GetNext(pos);
        // do something with nElement
    }
    

    TLListIter class

    The iterator class I present here simplifies the use slightly, making the code easier to read and maintain. It originates from a larger project I wrote where I have a list of objects of type A, each with their own list of objects of type B, and I needed to iterate all objects of type B in the system. This class simplified the tucancode.net immensly.

    So using this class, the above code becomes

    CList<int, int>      list;		// linked list
    TLListIter<int, int> iter(list);	// linked list iterator
    // add nodes to the list
    
    iter.begin();
    while (iter)
    {
        int nElement;
    
        nElement = iter++;
        // do something with nElement
    }
    

    Public Members

    Construction/Destruction

    TLListIter(TLList<TYPE, ARG_TYPE> &__list);
    Constructor to initialise the iterator with the the linked list to be iterated.

    TLListIter(TLListIter<TYPE, ARG_TYPE> &__iter);
    Copy constructor to create a new iterator for the same linked list with the same node position.

    virtual ~TLListIter();
    Virtual class destructor.

  • Operators

    operator bool ();
    Boolean operator will return true if there is a current node, or false if not.

    operator ARG_TYPE ();
    Linked List argument operator will returns the element at the current node.

    Navigation

    TLListIter<TYPE, ARG_TYPE> operator++(int);
    Post increment operator returns the current node and moves the internal position to the next node.

    TLListIter<TYPE, ARG_TYPE> operator--(int);
    Post decrement operator returns the current node and moves the internal position to the previous node.

    // these functions will return false if there are no elements in the list

    bool begin(void);
    Moves to the first node in the list. This function returns false if the linked list is empty.

    bool end(void);
    Moves to the last node in the list. This function returns false if the linked list is empty.

    MFC Compatibilty

    POSITION GetPosition(void) const;

    Returns the internal POSITION variable.

    Limitations

    • As the class stands, it cannot be used to process a list of bool. This is because of the operator bool() used to determine the end of the list.
    • For some reason unknown to me (please let me know any solutions) a compiler error is generated if the class is used while (nNumber == 7 && iter). Instead, this must be coded while (nNumber == 7 && iter == true) and then all is fine. Wierd.

     

     

     

    Copyright ?1998-2009 UCanCode.Net Software , all rights reserved.
    Other product and company names herein may be the trademarks of their respective owners.

    Please direct your questions or comments to webmaster@ucancode.net