一个RSS阅读器类_sql 

一个RSS阅读器类_xml_02class CFeedItem
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{//RSS条目
一个RSS阅读器类_microsoft_06public:
一个RSS阅读器类_microsoft_06    CFeedItem();
一个RSS阅读器类_microsoft_06    virtual ~CFeedItem();
一个RSS阅读器类_microsoft_06public:
一个RSS阅读器类_microsoft_06    CString        m_strAuthor;//作者
一个RSS阅读器类_microsoft_06    CString        m_strCategory;//类别
一个RSS阅读器类_microsoft_06    CString        m_strDescription;//描述信息
一个RSS阅读器类_microsoft_06    CString        m_strLink;//链接地址
一个RSS阅读器类_microsoft_06    CString        m_strPubDate;//发布日期
一个RSS阅读器类_microsoft_06    CString        m_strSubject;//主题
一个RSS阅读器类_microsoft_06    CString        m_strTitle;//标题
一个RSS阅读器类_microsoft_06    CString        m_strReadStatus;//是否已读
一个RSS阅读器类_sql_18};
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02class CFeedSource  
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{//RSS源
一个RSS阅读器类_microsoft_06public:
一个RSS阅读器类_microsoft_06    CFeedSource();
一个RSS阅读器类_microsoft_06    virtual ~CFeedSource();
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06public:
一个RSS阅读器类_microsoft_06    CString        m_strCopyright;//版权
一个RSS阅读器类_microsoft_06    CString        m_strDescription;//描述信息
一个RSS阅读器类_microsoft_06    CString        m_strGenerator;//生产者
一个RSS阅读器类_microsoft_06    CString        m_strLanguage;//语言
一个RSS阅读器类_microsoft_06    CString        m_strLastBuildDate;//上次构建日期
一个RSS阅读器类_microsoft_06    CString        m_strLink;//链接地址
一个RSS阅读器类_microsoft_06    CString        m_strTitle;//标题
一个RSS阅读器类_microsoft_06    CString        m_strTtl;
一个RSS阅读器类_microsoft_06    CString        m_strWebMaster;//管理员
一个RSS阅读器类_microsoft_06    CString        m_strImageDescription;//图片描述信息
一个RSS阅读器类_microsoft_06    CString        m_strImageHeight;//图片高度
一个RSS阅读器类_microsoft_06    CString        m_strImageWidth;//图片宽度
一个RSS阅读器类_microsoft_06    CString        m_strImageLink;//图片链接地址
一个RSS阅读器类_microsoft_06    CString        m_strImageTitle;//图片标题
一个RSS阅读器类_microsoft_06    CString        m_strImageUrl;//图片Url
一个RSS阅读器类_microsoft_06    CString        m_strVersion;//图片版本
一个RSS阅读器类_sql_18};
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02class CFeed
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{//RSS种子
一个RSS阅读器类_microsoft_06public:
一个RSS阅读器类_microsoft_06    CFeed();
一个RSS阅读器类_microsoft_06    CFeed( CString strXMLFile );
一个RSS阅读器类_microsoft_06    virtual ~CFeed();
一个RSS阅读器类_microsoft_06public:
一个RSS阅读器类_microsoft_06    static void RefreshAll();
一个RSS阅读器类_microsoft_06    static void MarkItemRead( CString strLink );
一个RSS阅读器类_microsoft_06    static void DeleteFeedSource( CString strLink );
一个RSS阅读器类_microsoft_06    static void DeleteListArray( CStringArray& strLinkArray );
一个RSS阅读器类_microsoft_06    static void GetFeedSourceList( CStringArray& strTitleArray, CStringArray& strLinkArray );
一个RSS阅读器类_microsoft_06    void LoadLocal( CString& strLink );
一个RSS阅读器类_microsoft_06    void BuildFromFile( CString strXMLFile );
一个RSS阅读器类_microsoft_06    CFeedSource                        m_source;        // Feed Source
一个RSS阅读器类_microsoft_06    CArray<CFeedItem,CFeedItem>        m_item;            // Feed Item
一个RSS阅读器类_microsoft_06    BOOL                            m_bAdded;
一个RSS阅读器类_microsoft_06    void Save( BOOL bSaveSource = TRUE );
一个RSS阅读器类_microsoft_06private:
一个RSS阅读器类_microsoft_06    static CString EscapeQuote( CString strValue );
一个RSS阅读器类_microsoft_06    static CString GetModuleFileDir();
一个RSS阅读器类_microsoft_06    static CString GetFieldValue( FieldsPtr fields, long nIndex );
一个RSS阅读器类_microsoft_06    static CString GetComError( _com_error& e );
一个RSS阅读器类_microsoft_06    static BOOL ExecuteSQL( _ConnectionPtr& pCnn, CString& strSQL, CString& strMsg );
一个RSS阅读器类_microsoft_06    void GetVersion(MSXML2::IXMLDOMNode *pNode);
一个RSS阅读器类_microsoft_06    void IterateChildNodes(MSXML2::IXMLDOMNode *pNode);
一个RSS阅读器类_microsoft_06    void BuildImage(MSXML2::IXMLDOMNode *pNode);
一个RSS阅读器类_microsoft_06    void BuildItem(MSXML2::IXMLDOMNode *pNode);
一个RSS阅读器类_microsoft_06    MSXML2::IXMLDOMDocument2*        m_pDoc;            // XML DOM Document
一个RSS阅读器类_microsoft_06    int                                m_nDepth;
一个RSS阅读器类_sql_18};
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02

 

一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02// FeedSource.cpp: implementation of the CFeedSource class.
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**///////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02#include "stdafx.h"
一个RSS阅读器类_xml_02#include "AgileReader.h"
一个RSS阅读器类_xml_02#include "FeedSource.h"
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02#ifdef _DEBUG
一个RSS阅读器类_xml_02#undef THIS_FILE
一个RSS阅读器类_xml_02static char THIS_FILE[]=__FILE__;
一个RSS阅读器类_xml_02#define new DEBUG_NEW
一个RSS阅读器类_xml_02#endif
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**///////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Construction/Destruction
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**///////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02CFeedItem::CFeedItem()
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02CFeedItem::~CFeedItem()
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02CFeedSource::CFeedSource()
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02CFeedSource::~CFeedSource()
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02CFeed::CFeed()
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    m_pDoc = NULL;
一个RSS阅读器类_microsoft_06    m_nDepth = 0;
一个RSS阅读器类_microsoft_06    m_bAdded = FALSE;
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02CFeed::CFeed( CString strXMLFile )
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    m_pDoc = NULL;
一个RSS阅读器类_microsoft_06    m_nDepth = 0;
一个RSS阅读器类_microsoft_06    m_bAdded = FALSE;
一个RSS阅读器类_microsoft_06    BuildFromFile( strXMLFile );
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02CFeed::~CFeed()
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Build XML Feed Information from an XML File
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02// strXMLFile:        Parsed in XML File Name
一个RSS阅读器类_xml_02// This function will build Feed Object from scratch by parsing XML Feed Information
一个RSS阅读器类_xml_02// Result is stored in m_source and m_item objects
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::BuildFromFile(CString strXMLFile)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    CString        strTmpFile = GetModuleFileDir() + _T("\\AgileReader.xml");
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 0. Download XML File
一个RSS阅读器类_microsoft_06    if ( URLDownloadToFile( NULL, strXMLFile, strTmpFile,0, NULL ) != S_OK )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{//下载XML文件
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Failed to download ") + strXMLFile );
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 1. Open XML Document, if open fails, then return
一个RSS阅读器类_microsoft_06    if ( m_pDoc != NULL )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        m_pDoc->Release();
一个RSS阅读器类_microsoft_06        m_pDoc = NULL;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    if ( SUCCEEDED (CoCreateInstance(MSXML2::CLSID_DOMDocument,
一个RSS阅读器类_microsoft_06                                    NULL,
一个RSS阅读器类_microsoft_06                                    CLSCTX_INPROC_SERVER,
一个RSS阅读器类_microsoft_06                                    MSXML2::IID_IXMLDOMDocument,
一个RSS阅读器类_microsoft_06                                    reinterpret_cast<void**>(&m_pDoc))))
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    m_pDoc->put_async( VARIANT_FALSE );
一个RSS阅读器类_microsoft_06    if ( m_pDoc->load( _bstr_t(strTmpFile) ) == VARIANT_FALSE )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{//加载XML文档
一个RSS阅读器类_microsoft_06        // Failed to load XML Document, report error message
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Failed to load XML Document") );
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 2. Get version property if it is available
一个RSS阅读器类_microsoft_06    // Step 3. Iterate to channel node, get the following child items
一个RSS阅读器类_microsoft_06    // title
一个RSS阅读器类_microsoft_06    // link
一个RSS阅读器类_microsoft_06    // description
一个RSS阅读器类_microsoft_06    // language
一个RSS阅读器类_microsoft_06    // copyright
一个RSS阅读器类_microsoft_06    // webMaster
一个RSS阅读器类_microsoft_06    // lastBuildDate
一个RSS阅读器类_microsoft_06    // ttl
一个RSS阅读器类_microsoft_06    // generator
一个RSS阅读器类_microsoft_06    // Then go to image node, get the following items
一个RSS阅读器类_microsoft_06    //        title
一个RSS阅读器类_microsoft_06    //        url
一个RSS阅读器类_microsoft_06    //        link
一个RSS阅读器类_microsoft_06    //        width
一个RSS阅读器类_microsoft_06    //        height
一个RSS阅读器类_microsoft_06    //        description
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 4. go to item node, get the following items
一个RSS阅读器类_microsoft_06    //        title
一个RSS阅读器类_microsoft_06    //        description
一个RSS阅读器类_microsoft_06    //        link
一个RSS阅读器类_microsoft_06    //        author
一个RSS阅读器类_microsoft_06    //        category
一个RSS阅读器类_microsoft_06    //        pubDate
一个RSS阅读器类_microsoft_06    //        subject
一个RSS阅读器类_microsoft_06    MSXML2::IXMLDOMNode        *pNode = NULL;
一个RSS阅读器类_microsoft_06    if ( SUCCEEDED(m_pDoc->QueryInterface(MSXML2::IID_IXMLDOMNode, 
一个RSS阅读器类_microsoft_06                reinterpret_cast<void**>(&pNode))))
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        IterateChildNodes(pNode);
一个RSS阅读器类_microsoft_06        pNode->Release();
一个RSS阅读器类_microsoft_06        pNode = NULL;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // We are not using smart pointer, so we have to release it outself
一个RSS阅读器类_microsoft_06    if ( m_pDoc )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        m_pDoc->Release();
一个RSS阅读器类_microsoft_06        m_pDoc = NULL;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Get Feed Version Information
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::GetVersion(MSXML2::IXMLDOMNode *pNode)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Iterate Child Node
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::IterateChildNodes(MSXML2::IXMLDOMNode *pNode)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{//迭代访问所有子节点
一个RSS阅读器类_microsoft_06    BSTR        bstrNodeName;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    if ( pNode )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        m_nDepth++;
一个RSS阅读器类_microsoft_06        CString strOutput;
一个RSS阅读器类_microsoft_06        pNode->get_nodeName(&bstrNodeName);
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06        //
一个RSS阅读器类_microsoft_06        // Find out the node type (as a string).
一个RSS阅读器类_microsoft_06        //
一个RSS阅读器类_microsoft_06        BSTR bstrNodeType;
一个RSS阅读器类_microsoft_06        pNode->get_nodeTypeString(&bstrNodeType);
一个RSS阅读器类_microsoft_06        CString strType;
一个RSS阅读器类_microsoft_06        strType = CString( bstrNodeType );
一个RSS阅读器类_microsoft_06        SysFreeString(bstrNodeType);
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06        MSXML2::DOMNodeType eEnum;
一个RSS阅读器类_microsoft_06        pNode->get_nodeType(&eEnum);
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06        CString strValue;
一个RSS阅读器类_microsoft_06        BSTR bstrValue;
一个RSS阅读器类_microsoft_06        switch( eEnum )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_TEXT:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Text string in the XML document
一个RSS阅读器类_microsoft_06                BSTR bstrValue;
一个RSS阅读器类_microsoft_06                pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrValue );
一个RSS阅读器类_microsoft_06                SysFreeString(bstrValue);
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_COMMENT:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Comment in the XML document
一个RSS阅读器类_microsoft_06                VARIANT vValue;
一个RSS阅读器类_microsoft_06                pNode->get_nodeValue(&vValue);
一个RSS阅读器类_microsoft_06                VariantClear(&vValue);
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_PROCESSING_INSTRUCTION:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Processing instruction
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrNodeName );
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_ELEMENT:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Element
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrNodeName );
一个RSS阅读器类_microsoft_06                if ( strOutput == _T("rss") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    GetVersion( pNode );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("copyright") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                    m_source.m_strCopyright = CString( bstrValue );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("title") && m_nDepth == 4 )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                    m_source.m_strTitle = CString( bstrValue );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("link") && m_nDepth == 4 )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                    m_source.m_strLink = CString( bstrValue );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("description") && m_nDepth == 4 )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                    m_source.m_strDescription = CString( bstrValue );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("language") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                    m_source.m_strLanguage = CString( bstrValue );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("webMaster") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                    m_source.m_strWebMaster = CString( bstrValue );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("lastBuildDate") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                    m_source.m_strLastBuildDate = CString( bstrValue );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("ttl") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                    m_source.m_strTtl = CString( bstrValue );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("generator") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    pNode->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06                    m_source.m_strGenerator = CString( bstrValue );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("image") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    BuildImage( pNode );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                else if ( strOutput == _T("item") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175                一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                    BuildItem( pNode );
一个RSS阅读器类_ide_179                }
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_DOCUMENT:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Document
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrNodeName ) + _T(" - ") + CString( strType );
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_DOCUMENT_TYPE:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Document Type
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrNodeName ) + _T(" - ") + CString( strType );
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_DOCUMENT_FRAGMENT:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Document Fragment
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrNodeName ) + _T(" - ") + CString( strType );
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_NOTATION:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Notation
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrNodeName ) + _T(" - ") + CString( strType );
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_ENTITY:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Entity
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrNodeName ) + _T(" - ") + CString( strType );
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_ENTITY_REFERENCE:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // Entity Reference
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrNodeName ) + _T(" - ") + CString( strType );
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            case MSXML2::NODE_CDATA_SECTION:
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                // CData section
一个RSS阅读器类_microsoft_06                strOutput = CString( bstrNodeName ) + _T(" - ") + CString( strType );
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        SysFreeString(bstrNodeName);
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    //
一个RSS阅读器类_microsoft_06    // Any child nodes of this node need displaying too.
一个RSS阅读器类_microsoft_06    //
一个RSS阅读器类_microsoft_06    MSXML2::IXMLDOMNode *pNext = NULL;
一个RSS阅读器类_microsoft_06    MSXML2::IXMLDOMNode *pChild;
一个RSS阅读器类_microsoft_06    pNode->get_firstChild(&pChild);
一个RSS阅读器类_microsoft_06    while( pChild )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{//递归遍历子节点
一个RSS阅读器类_microsoft_06        IterateChildNodes(pChild);
一个RSS阅读器类_microsoft_06        pChild->get_nextSibling(&pNext);
一个RSS阅读器类_microsoft_06        pChild->Release();
一个RSS阅读器类_microsoft_06        pChild = pNext;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    m_nDepth--;//递归深度减
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Build Image Section
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::BuildImage(MSXML2::IXMLDOMNode *pNode)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    MSXML2::IXMLDOMNode *pNext = NULL;
一个RSS阅读器类_microsoft_06    MSXML2::IXMLDOMNode *pChild;
一个RSS阅读器类_microsoft_06    CString        strOutput;
一个RSS阅读器类_microsoft_06    BSTR        bstrNodeName;
一个RSS阅读器类_microsoft_06    BSTR        bstrValue;
一个RSS阅读器类_microsoft_06    pNode->get_firstChild(&pChild);
一个RSS阅读器类_microsoft_06    while( pChild )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        pChild->get_nodeName(&bstrNodeName);
一个RSS阅读器类_microsoft_06        strOutput = CString( bstrNodeName );
一个RSS阅读器类_microsoft_06        if ( strOutput == _T("title") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            m_source.m_strImageTitle = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("url") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            m_source.m_strImageUrl = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("link") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            m_source.m_strImageLink = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("width") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            m_source.m_strImageWidth = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("height") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            m_source.m_strImageHeight = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("description") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            m_source.m_strImageDescription = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06        pChild->get_nextSibling(&pNext);
一个RSS阅读器类_microsoft_06        pChild->Release();
一个RSS阅读器类_microsoft_06        pChild = pNext;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Build Item Section
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::BuildItem(MSXML2::IXMLDOMNode *pNode)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    MSXML2::IXMLDOMNode *pNext = NULL;
一个RSS阅读器类_microsoft_06    MSXML2::IXMLDOMNode *pChild;
一个RSS阅读器类_microsoft_06    CString        strOutput;
一个RSS阅读器类_microsoft_06    BSTR        bstrNodeName;
一个RSS阅读器类_microsoft_06    CFeedItem    item;
一个RSS阅读器类_microsoft_06    BSTR        bstrValue;
一个RSS阅读器类_microsoft_06    pNode->get_firstChild(&pChild);
一个RSS阅读器类_microsoft_06    while( pChild )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        pChild->get_nodeName(&bstrNodeName);
一个RSS阅读器类_microsoft_06        strOutput = CString( bstrNodeName );
一个RSS阅读器类_microsoft_06        if ( strOutput == _T("title") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            item.m_strTitle = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("description") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            item.m_strDescription = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("link") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            item.m_strLink = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("author") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            item.m_strAuthor = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("category") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            item.m_strCategory = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("pubDate") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            item.m_strPubDate = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else if ( strOutput == _T("subject") )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            pChild->get_text(&bstrValue);
一个RSS阅读器类_microsoft_06            item.m_strSubject = CString( bstrValue );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06        pChild->get_nextSibling(&pNext);
一个RSS阅读器类_microsoft_06        pChild->Release();
一个RSS阅读器类_microsoft_06        pChild = pNext;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    m_item.Add( item );
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Save Feed Information into Database
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04void CFeed::Save( BOOL bSaveSource /**//*= TRUE*/ )
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{//保持RSS种子信息倒数据库种
一个RSS阅读器类_microsoft_06    _ConnectionPtr        pCnn = NULL;
一个RSS阅读器类_microsoft_06    CString                strSQL;
一个RSS阅读器类_microsoft_06    CString                strMsg;
一个RSS阅读器类_microsoft_06    int                    nIndex;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 1. Create object
一个RSS阅读器类_microsoft_06    pCnn.CreateInstance( __uuidof( Connection ) );
一个RSS阅读器类_microsoft_06    if ( pCnn == NULL )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not create connection object, please install MDAC!") );
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 2. Open connection
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        CString        strCnn;
一个RSS阅读器类_microsoft_06        strCnn.Format( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\AgileReader.mdb;Jet OLEDB:Database Password=philips;"), GetModuleFileDir() );
一个RSS阅读器类_microsoft_06        pCnn->Open( _bstr_t(strCnn), "", "", adConnectUnspecified );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not open connection:\n") + GetComError( e ) );
一个RSS阅读器类_microsoft_06        pCnn.Release();
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 3. Execute Insert Statement on FeedSource
一个RSS阅读器类_microsoft_06    // In double click case, we don't want to save this
一个RSS阅读器类_microsoft_06    if ( bSaveSource )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        strSQL.Format( _T("insert into FeedSource (FeedLink, description, title, version, copyright, generator, feedlanguage, lastbuilddate, ttl, webmaster, imagedescription, imageheight, imagewidth, imagelink, imagetitle, imageurl ) values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s')"),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strLink ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strDescription ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strTitle ),
一个RSS阅读器类_microsoft_06            _T("2.0"),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strCopyright ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strGenerator ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strLanguage ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strLastBuildDate ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strTtl ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strWebMaster ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strImageDescription ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strImageHeight ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strImageWidth ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strImageLink ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strImageTitle ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strImageUrl ) );
一个RSS阅读器类_microsoft_06        if ( !ExecuteSQL( pCnn, strSQL, strMsg ) )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            // AfxMessageBox( strMsg + strSQL );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_microsoft_06        else
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            m_bAdded = TRUE;
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06  // Step 4. Execute Insert Statement on FeedItem
一个RSS阅读器类_microsoft_06    for( nIndex = 0; nIndex < m_item.GetSize(); nIndex++ )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        strSQL.Format( _T("insert into FeedItem (FeedLink, title, link, description, pubdate, author, category, subject) values('%s','%s','%s','%s','%s','%s','%s','%s')"),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_source.m_strLink ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_item[nIndex].m_strTitle ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_item[nIndex].m_strLink ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_item[nIndex].m_strDescription ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_item[nIndex].m_strPubDate ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_item[nIndex].m_strAuthor ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_item[nIndex].m_strCategory ),
一个RSS阅读器类_microsoft_06            EscapeQuote( m_item[nIndex].m_strSubject )
一个RSS阅读器类_microsoft_06            );
一个RSS阅读器类_microsoft_06        if ( !ExecuteSQL( pCnn, strSQL, strMsg ) )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            // AfxMessageBox( strMsg + strSQL );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    pCnn.Release();
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Execute SQL Statement and return error message if any
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02BOOL CFeed::ExecuteSQL(_ConnectionPtr &pCnn, CString &strSQL, CString& strMsg)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        pCnn->Execute( _bstr_t( strSQL ), NULL, adCmdText );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        strMsg = GetComError( e );
一个RSS阅读器类_microsoft_06        return FALSE;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    return TRUE;
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Retrieve Com Error Information
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02CString CFeed::GetComError( _com_error& e )
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    CString        strMsg;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    _bstr_t bstrSource(e.Source());
一个RSS阅读器类_microsoft_06    _bstr_t bstrDescription(e.Description());
一个RSS阅读器类_microsoft_06    
一个RSS阅读器类_microsoft_06    strMsg.Format( _T("Code = %08lx\nCode meaning = %s\nSource = %s\nDescription = %s"),
一个RSS阅读器类_microsoft_06        e.Error(),
一个RSS阅读器类_microsoft_06        e.ErrorMessage(),
一个RSS阅读器类_microsoft_06        (LPCSTR) bstrSource,
一个RSS阅读器类_microsoft_06        (LPCSTR) bstrDescription );
一个RSS阅读器类_microsoft_06    return strMsg;
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Load Feed Information from database
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::LoadLocal(CString &strLink)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{//从数据库中读取RSS种子信息
一个RSS阅读器类_microsoft_06    _ConnectionPtr        pCnn = NULL;
一个RSS阅读器类_microsoft_06    CString                strSQL;
一个RSS阅读器类_microsoft_06    CString                strMsg;
一个RSS阅读器类_microsoft_06    _RecordsetPtr        rs = NULL;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 1. Create object
一个RSS阅读器类_microsoft_06    pCnn.CreateInstance( __uuidof( Connection ) );
一个RSS阅读器类_microsoft_06    if ( pCnn == NULL )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not create connection object, please install MDAC!") );
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 2. Open connection
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        CString        strCnn;
一个RSS阅读器类_microsoft_06        strCnn.Format( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\AgileReader.mdb;Jet OLEDB:Database Password=philips;"), GetModuleFileDir() );
一个RSS阅读器类_microsoft_06        pCnn->Open( _bstr_t(strCnn), "", "", adConnectUnspecified );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not open connection:\n") + GetComError( e ) );
一个RSS阅读器类_microsoft_06        pCnn.Release();
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 3. Read FeedSource and populate it into m_source object
一个RSS阅读器类_microsoft_06    strSQL.Format( _T("select * from FeedSource where FeedLink = '%s'"), strLink );
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        rs = pCnn->Execute( _bstr_t( strSQL ), NULL, adCmdText );
一个RSS阅读器类_microsoft_06        if ( rs != NULL && rs->adoEOF != TRUE )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            m_source.m_strLink = strLink;
一个RSS阅读器类_microsoft_06            m_source.m_strDescription = GetFieldValue( rs->Fields, 1 );
一个RSS阅读器类_microsoft_06            m_source.m_strTitle = GetFieldValue( rs->Fields, 2 );
一个RSS阅读器类_microsoft_06            m_source.m_strVersion = GetFieldValue( rs->Fields, 3 );
一个RSS阅读器类_microsoft_06            m_source.m_strCopyright = GetFieldValue( rs->Fields, 4 );
一个RSS阅读器类_microsoft_06            m_source.m_strGenerator = GetFieldValue( rs->Fields, 5 );
一个RSS阅读器类_microsoft_06            m_source.m_strLanguage = GetFieldValue( rs->Fields, 6 );
一个RSS阅读器类_microsoft_06            m_source.m_strLastBuildDate = GetFieldValue( rs->Fields, 7 );
一个RSS阅读器类_microsoft_06            m_source.m_strTtl = GetFieldValue( rs->Fields, 8 );
一个RSS阅读器类_microsoft_06            m_source.m_strWebMaster = GetFieldValue( rs->Fields, 9 );
一个RSS阅读器类_microsoft_06            m_source.m_strImageDescription = GetFieldValue( rs->Fields, 10 );
一个RSS阅读器类_microsoft_06            m_source.m_strImageHeight = GetFieldValue( rs->Fields, 11 );
一个RSS阅读器类_microsoft_06            m_source.m_strImageWidth = GetFieldValue( rs->Fields, 12 );
一个RSS阅读器类_microsoft_06            m_source.m_strImageLink = GetFieldValue( rs->Fields, 13 );
一个RSS阅读器类_microsoft_06            m_source.m_strImageTitle = GetFieldValue( rs->Fields, 14 );
一个RSS阅读器类_microsoft_06            m_source.m_strImageUrl = GetFieldValue( rs->Fields, 15 );
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( GetComError( e ) );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    rs.Release();
一个RSS阅读器类_microsoft_06    rs = NULL;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 4. Read FeedItem and populate it into m_item object
一个RSS阅读器类_microsoft_06    strSQL.Format( _T("select * from FeedItem where FeedLink = '%s' order by pubDate desc, title asc"), strLink );
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        rs = pCnn->Execute( _bstr_t( strSQL ), NULL, adCmdText );
一个RSS阅读器类_microsoft_06        while( rs != NULL && rs->adoEOF != TRUE )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            if ( rs->adoEOF )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            CFeedItem    item;
一个RSS阅读器类_microsoft_06            item.m_strTitle = GetFieldValue( rs->Fields, 1 );
一个RSS阅读器类_microsoft_06            item.m_strLink = GetFieldValue( rs->Fields, 2 );
一个RSS阅读器类_microsoft_06            item.m_strDescription = GetFieldValue( rs->Fields, 3 );
一个RSS阅读器类_microsoft_06            item.m_strPubDate = GetFieldValue( rs->Fields, 4 );
一个RSS阅读器类_microsoft_06            item.m_strAuthor = GetFieldValue( rs->Fields, 5 );
一个RSS阅读器类_microsoft_06            item.m_strCategory = GetFieldValue( rs->Fields, 6 );
一个RSS阅读器类_microsoft_06            item.m_strSubject = GetFieldValue( rs->Fields, 7 );
一个RSS阅读器类_microsoft_06            item.m_strReadStatus = GetFieldValue( rs->Fields, 8 );
一个RSS阅读器类_microsoft_06            m_item.Add( item );
一个RSS阅读器类_microsoft_06            rs->MoveNext();
一个RSS阅读器类_microsoft_06            if ( rs->adoEOF )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( GetComError( e ) );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    rs.Release();
一个RSS阅读器类_microsoft_06    rs = NULL;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    pCnn.Release();
一个RSS阅读器类_microsoft_06    pCnn = NULL;
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Get Field Value
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02CString CFeed::GetFieldValue(FieldsPtr fields, long nIndex)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    _variant_t vt = fields->GetItem( nIndex )->Value;
一个RSS阅读器类_microsoft_06    if ( vt.vt == VT_NULL || vt.vt == VT_EMPTY )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        return _T("");
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    return CString( (char*)_bstr_t( vt ) );
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02void CFeed::GetFeedSourceList( CStringArray& strTitleArray, CStringArray& strLinkArray )
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    _ConnectionPtr        pCnn = NULL;
一个RSS阅读器类_microsoft_06    CString                strSQL;
一个RSS阅读器类_microsoft_06    CString                strMsg;
一个RSS阅读器类_microsoft_06    _RecordsetPtr        rs = NULL;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 1. Create object
一个RSS阅读器类_microsoft_06    pCnn.CreateInstance( __uuidof( Connection ) );
一个RSS阅读器类_microsoft_06    if ( pCnn == NULL )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not create connection object, please install MDAC!") );
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 2. Open connection
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        CString        strCnn;
一个RSS阅读器类_microsoft_06        strCnn.Format( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\AgileReader.mdb;Jet OLEDB:Database Password=philips;"), GetModuleFileDir() );
一个RSS阅读器类_microsoft_06        pCnn->Open( _bstr_t(strCnn), "", "", adConnectUnspecified );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not open connection:\n") + GetComError( e ) );
一个RSS阅读器类_microsoft_06        pCnn.Release();
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 3. Read FeedSource and populate it into m_source object
一个RSS阅读器类_microsoft_06    strSQL = _T("select distinct title, FeedLink from FeedSource order by title");
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        rs = pCnn->Execute( _bstr_t( strSQL ), NULL, adCmdText );
一个RSS阅读器类_microsoft_06        while ( rs != NULL && rs->adoEOF != TRUE && rs->BOF != TRUE )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            if ( rs->adoEOF )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            strTitleArray.Add( GetFieldValue( rs->Fields, 0 ) );
一个RSS阅读器类_microsoft_06            strLinkArray.Add( GetFieldValue( rs->Fields, 1 ) );
一个RSS阅读器类_microsoft_06            rs->MoveNext();
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( GetComError( e ) );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    rs.Release();
一个RSS阅读器类_microsoft_06    rs = NULL;
一个RSS阅读器类_microsoft_06    pCnn.Release();
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Get Module File Path
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02CString CFeed::GetModuleFileDir()
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{//获取模块文件路径
一个RSS阅读器类_microsoft_06    DWORD    dwLength, dwSize;
一个RSS阅读器类_microsoft_06    TCHAR    szFileName [MAX_PATH];
一个RSS阅读器类_microsoft_06    CString    strFileName;
一个RSS阅读器类_microsoft_06    int        nPos;
一个RSS阅读器类_microsoft_06    
一个RSS阅读器类_microsoft_06    dwSize = sizeof (szFileName) / sizeof (szFileName [0]);
一个RSS阅读器类_microsoft_06    dwLength = ::GetModuleFileName (AfxGetInstanceHandle(), szFileName, dwSize);
一个RSS阅读器类_microsoft_06    if (dwLength <= 0) 
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        return _T("");
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    strFileName = szFileName;
一个RSS阅读器类_microsoft_06    nPos = strFileName.ReverseFind( '\\' );
一个RSS阅读器类_microsoft_06    return strFileName.Left( nPos );
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Escape Single Quote
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02CString CFeed::EscapeQuote(CString strValue)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    strValue.Replace( _T("'"), _T("''") );
一个RSS阅读器类_microsoft_06    return strValue;
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Delete list from Database
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::DeleteListArray(CStringArray &strLinkArray)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    _ConnectionPtr        pCnn = NULL;
一个RSS阅读器类_microsoft_06    CString                strSQL;
一个RSS阅读器类_microsoft_06    CString                strMsg;
一个RSS阅读器类_microsoft_06    int                    nIndex;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 1. Create object
一个RSS阅读器类_microsoft_06    pCnn.CreateInstance( __uuidof( Connection ) );
一个RSS阅读器类_microsoft_06    if ( pCnn == NULL )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not create connection object, please install MDAC!") );
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 2. Open connection
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        CString        strCnn;
一个RSS阅读器类_microsoft_06        strCnn.Format( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\AgileReader.mdb;Jet OLEDB:Database Password=philips;"), GetModuleFileDir() );
一个RSS阅读器类_microsoft_06        pCnn->Open( _bstr_t(strCnn), "", "", adConnectUnspecified );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not open connection:\n") + GetComError( e ) );
一个RSS阅读器类_microsoft_06        pCnn.Release();
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 3. Delete Link from FeedList table
一个RSS阅读器类_microsoft_06    for(nIndex = 0; nIndex < strLinkArray.GetSize(); nIndex++ )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        strSQL.Format( _T("delete from FeedItem where link = '%s'"), EscapeQuote( strLinkArray[nIndex] ) );
一个RSS阅读器类_microsoft_06        ExecuteSQL( pCnn, strSQL, strMsg );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 4. Done!
一个RSS阅读器类_microsoft_06    pCnn.Release();
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Delete Feed Source
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::DeleteFeedSource(CString strLink)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06    _ConnectionPtr        pCnn = NULL;
一个RSS阅读器类_microsoft_06    CString                strSQL;
一个RSS阅读器类_microsoft_06    CString                strMsg;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 1. Create object
一个RSS阅读器类_microsoft_06    pCnn.CreateInstance( __uuidof( Connection ) );
一个RSS阅读器类_microsoft_06    if ( pCnn == NULL )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not create connection object, please install MDAC!") );
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 2. Open connection
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        CString        strCnn;
一个RSS阅读器类_microsoft_06        strCnn.Format( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\AgileReader.mdb;Jet OLEDB:Database Password=philips;"), GetModuleFileDir() );
一个RSS阅读器类_microsoft_06        pCnn->Open( _bstr_t(strCnn), "", "", adConnectUnspecified );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not open connection:\n") + GetComError( e ) );
一个RSS阅读器类_microsoft_06        pCnn.Release();
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 3. Delete Link from FeedList table
一个RSS阅读器类_microsoft_06    strSQL.Format( _T("delete from FeedSource where FeedLink = '%s'"), EscapeQuote( strLink ) );
一个RSS阅读器类_microsoft_06    ExecuteSQL( pCnn, strSQL, strMsg );
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 4. Done!
一个RSS阅读器类_microsoft_06    pCnn.Release();
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Mark an item as read
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::MarkItemRead(CString strLink)
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{//标记Rss条目为已读状态
一个RSS阅读器类_microsoft_06    _ConnectionPtr        pCnn = NULL;
一个RSS阅读器类_microsoft_06    CString                strSQL;
一个RSS阅读器类_microsoft_06    CString                strMsg;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 1. Create object
一个RSS阅读器类_microsoft_06    pCnn.CreateInstance( __uuidof( Connection ) );
一个RSS阅读器类_microsoft_06    if ( pCnn == NULL )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not create connection object, please install MDAC!") );
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 2. Open connection
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        CString        strCnn;
一个RSS阅读器类_microsoft_06        strCnn.Format( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\AgileReader.mdb;Jet OLEDB:Database Password=philips;"), GetModuleFileDir() );
一个RSS阅读器类_microsoft_06        pCnn->Open( _bstr_t(strCnn), "", "", adConnectUnspecified );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not open connection:\n") + GetComError( e ) );
一个RSS阅读器类_microsoft_06        pCnn.Release();
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 3. Delete Link from FeedList table
一个RSS阅读器类_microsoft_06    strSQL.Format( _T("update FeedItem set readstatus = 1 where link = '%s'"), EscapeQuote( strLink ) );
一个RSS阅读器类_microsoft_06    ExecuteSQL( pCnn, strSQL, strMsg );
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 4. Done!
一个RSS阅读器类_microsoft_06    pCnn.Release();
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04/**//////////////////////////////////////////////////////////////////////////////
一个RSS阅读器类_xml_02// Refresh All SubScriptions
一个RSS阅读器类_xml_02//
一个RSS阅读器类_xml_02void CFeed::RefreshAll()
一个RSS阅读器类_xml_03一个RSS阅读器类_链接地址_04一个RSS阅读器类_microsoft_05{//刷新订阅信息
一个RSS阅读器类_microsoft_06    _ConnectionPtr        pCnn = NULL;
一个RSS阅读器类_microsoft_06    CString                strSQL;
一个RSS阅读器类_microsoft_06    CString                strMsg;
一个RSS阅读器类_microsoft_06    CStringArray        strLinkArray;
一个RSS阅读器类_microsoft_06    _RecordsetPtr        rs = NULL;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 1. Create object
一个RSS阅读器类_microsoft_06    pCnn.CreateInstance( __uuidof( Connection ) );
一个RSS阅读器类_microsoft_06    if ( pCnn == NULL )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not create connection object, please install MDAC!") );
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 2. Open connection
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        CString        strCnn;
一个RSS阅读器类_microsoft_06        strCnn.Format( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\AgileReader.mdb;Jet OLEDB:Database Password=philips;"), GetModuleFileDir() );
一个RSS阅读器类_microsoft_06        pCnn->Open( _bstr_t(strCnn), "", "", adConnectUnspecified );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( _T("Can not open connection:\n") + GetComError( e ) );
一个RSS阅读器类_microsoft_06        pCnn.Release();
一个RSS阅读器类_microsoft_06        return;
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 3. Get all the subscriptions
一个RSS阅读器类_microsoft_06    strSQL = _T("select FeedLink from FeedSource");
一个RSS阅读器类_microsoft_06    try
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        rs = pCnn->Execute( _bstr_t( strSQL ), NULL, adCmdText );
一个RSS阅读器类_microsoft_06        while ( rs != NULL && rs->adoEOF != TRUE )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175        一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06            if ( rs->adoEOF )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175            一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06                break;
一个RSS阅读器类_ide_179            }
一个RSS阅读器类_microsoft_06            strLinkArray.Add( GetFieldValue( rs->Fields, 0 ) );
一个RSS阅读器类_microsoft_06            rs->MoveNext();
一个RSS阅读器类_ide_179        }
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    catch( _com_error& e )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        AfxMessageBox( GetComError( e ) );
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06    rs.Release();
一个RSS阅读器类_microsoft_06    rs = NULL;
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 4. Refreah each link
一个RSS阅读器类_microsoft_06    for( int nIndex = 0; nIndex < strLinkArray.GetSize(); nIndex++ )
一个RSS阅读器类_xml_174一个RSS阅读器类_microsoft_175    一个RSS阅读器类_microsoft_05{
一个RSS阅读器类_microsoft_06        CFeed    feed( strLinkArray.GetAt( nIndex ) );
一个RSS阅读器类_microsoft_06        feed.m_source.m_strLink = strLinkArray.GetAt( nIndex );
一个RSS阅读器类_microsoft_06        feed.Save();
一个RSS阅读器类_ide_179    }
一个RSS阅读器类_microsoft_06
一个RSS阅读器类_microsoft_06    // Step 5. Done!
一个RSS阅读器类_microsoft_06    pCnn.Release();
一个RSS阅读器类_sql_18}
一个RSS阅读器类_xml_02
一个RSS阅读器类_xml_02