Click here to Skip to main content
15,668,220 members
Articles / Programming Languages / Objective C
Article
Posted 31 Oct 2001

Stats

71.7K views
724 downloads
21 bookmarked

Serializing All Data in a Window into XML

Rate me:
Please Sign up or sign in to vote.
3.67/5 (2 votes)
31 Oct 2001
Serializing data into an XML string in a window dialog

The Method

Create an empty Visual C++ 6.0 dialog-based application using the MFC wizard. Add as many different controls as possible to the application (include edit boxes, drop down list controls, check boxes, radio buttons, date control, etc.).

Add a button called IDC_SERIALIZE and double-click on it to add the function below. Compile, run and fill in random data. When you click the serialize button, the application will get all data filled from all the controls and copy them into a CString that gets displayed. This is very useful for those times when you need to capture all data in a window.

Note: This method does not handle all the different control types available.

C++
void CTestDlg::OnSerialize() 
{
    int nCount = 0;
    CString csText, csXMLReport;
    CWnd* pWndInitial = GetFocus();
    CWnd* pWnd = pWndInitial;
    char Name[51];

    csXMLReport = "<?xml version='1.0'?>\n";
    csXMLReport += "<report xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>\n";
    ::SendMessage(this->m_hWnd, WM_NEXTDLGCTL, 0, 0);
    pWnd = GetFocus();
    GetClassName(pWnd->m_hWnd, Name, 50);

    while (pWnd != pWndInitial)
    {
        pWnd->GetWindowText(csText);
        csText.TrimLeft();

        if (strcmp(Name,"Button") == 0)
        {
            if (IsDlgButtonChecked(pWnd->GetDlgCtrlID()))
            {
                csXMLReport += "<" + csText + ">";
                csXMLReport += "1";
                csXMLReport += "</" + csText + ">\n";
            }
            else
            {
                CheckDlgButton(pWnd->GetDlgCtrlID(), BST_CHECKED);

                if (IsDlgButtonChecked(pWnd->GetDlgCtrlID()))
                {
                    csXMLReport += "<" + csText + ">";
                    csXMLReport += "0";
                    csXMLReport += "</" + csText + ">\n";
                }
            }
        }
        else if (strcmp(Name,"Edit") == 0)
        {
            if (csText == "")
                csText = "NULL";

            csXMLReport += "<" + csText + "/>\n";
        }
        else if (strcmp(Name,"SysDateTimePick32") == 0)
        {
            csXMLReport += "<Date>" + csText + "</Date>\n";
        }

        ::SendMessage(this->m_hWnd, WM_NEXTDLGCTL, 0, 0);
        pWnd = GetFocus();
        GetClassName(pWnd->m_hWnd, Name, 50);
    }

    csXMLReport += "</report>";
    MessageBox(csXMLReport, MB_OK, NULL);
}

License

This article has no explicit license attached to it, but may contain usage terms in the article text or the download files themselves. If in doubt, please contact the author via the discussion board below.

A list of licenses authors might use can be found here.


Written By
Systems Engineer
United States United States
Bassam Abdul-Baki has a Bachelor of Science (BS) degree and a Master of Science (MS) degree in Mathematics and another MS in Technology Management. He's an analyst by trade. He started out in Quality Assurance (QA) and analysis, then dabbled in Visual C++ and Visual C# programming for a while, and then came back to QA and analysis again. He's not sure where he'll be five years from now, but is looking into data analytics.

Bassam is into mathematics, technology, astronomy, archaeology, and genealogy.

Comments and Discussions

 
GeneralSaving XML into a file Pin
gabriel92716-Aug-05 12:46
gabriel92716-Aug-05 12:46 
GeneralRe: Saving XML into a file Pin
Bassam Abdul-Baki16-Aug-05 13:39
professionalBassam Abdul-Baki16-Aug-05 13:39 
GeneralRe: Saving XML into a file Pin
gabriel92719-Aug-05 6:17
gabriel92719-Aug-05 6:17 
GeneralRe: Saving XML into a file Pin
Bassam Abdul-Baki19-Aug-05 17:47
professionalBassam Abdul-Baki19-Aug-05 17:47 
QuestionWhat is the use? Pin
vadivelkumar11-May-05 6:12
vadivelkumar11-May-05 6:12 
AnswerRe: What is the use? Pin
gabriel9275-Aug-05 7:42
gabriel9275-Aug-05 7:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.