亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bksax.cpp

?? wdk自帶xpsdrv filter 之 booklet
?? CPP
字號:
/*++

Copyright (c) 2005 Microsoft Corporation

All rights reserved.

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

File Name:

   bksax.cpp

Abstract:

   Booklet filter SAX handler implementation. The booklet SAX handler derives
   from the default SAX handler and implements the necesary SAX interfaces to
   process fixed page mark-up for booklet printing.
   For documents with odd page counts, we add a blank padding page so that the
   2-Up behaves correctly. All that is required of the handler is to retrieve
   the fixed page open tag and write this out.

--*/

#include "precomp.h"
#include "debug.h"
#include "globals.h"
#include "xdstring.h"
#include "bstrops.h"
#include "bksax.h"

/*++

Routine Name:

    CBkSaxHandler::CBkSaxHandler

Routine Description:

    Contructor for the booklet filters SAX handler which registers
    internally the writer for sending new markup out to

Arguments:

    pWriter - Pointer to a write stream which receives markup

Return Value:

    None
    Throws CXDException(HRESULT) on an error

--*/
CBkSaxHandler::CBkSaxHandler(
    __in IPrintWriteStream* pWriter
    ) :
    m_pWriter(pWriter)
{
    ASSERTMSG(m_pWriter != NULL, "NULL writer passed to booklet SAX handler.\n");

    HRESULT hr = S_OK;
    if (FAILED(hr = CHECK_POINTER(m_pWriter, E_POINTER)))
    {
        throw CXDException(hr);
    }
}

/*++

Routine Name:

    CBkSaxHandler::~CBkSaxHandler

Routine Description:

    Default destructor for the booklet filters SAX handler

Arguments:

    None

Return Value:

    None

--*/
CBkSaxHandler::~CBkSaxHandler()
{
}

/*++

Routine Name:

    CBkSaxHandler::startElement

Routine Description:

    SAX handler method which handles each start element for the XML markup

Arguments:

    pwchQName   - Pointer to a string containing the element name
    cchQName    - Count of the number of characters in the element name
    pAttributes - Pointer to the attribute list for the supplied element

Return Value:

    HRESULT
    S_OK - On success
    E_*  - On error

--*/
HRESULT STDMETHODCALLTYPE
CBkSaxHandler::startElement(
    CONST wchar_t*,
    INT,
    CONST wchar_t*,
    INT,
    __in_ecount(cchQName) CONST wchar_t*  pwchQName,
    __in                  INT             cchQName,
    __in                  ISAXAttributes* pAttributes
    )
{
    HRESULT hr = S_OK;
    CStringXDW cstrOut;
    CComBSTR bstrElement;

    hr = bstrElement.Append(pwchQName, cchQName);

    //
    // All we are doing is copying the fixed page root into the new
    // document to ensure the same page size
    //
    INT cAttributes = 0;
    if (SUCCEEDED(hr) &&
        bstrElement == L"FixedPage" &&
        SUCCEEDED(hr = pAttributes->getLength(&cAttributes)))
    {
        try
        {
            cstrOut.Append(L"<");
            cstrOut.Append(bstrElement);
        }
        catch (CXDException& e)
        {
            hr = e;
        }

        //
        // For all attributes
        //
        for (INT cIndex = 0; cIndex < cAttributes && SUCCEEDED(hr); cIndex++)
        {
            PCWSTR pszAttUri   = NULL;
            INT    cchAttUri   = 0;
            PCWSTR pszAttName  = NULL;
            INT    cchAttName  = 0;
            PCWSTR pszAttQName = NULL;
            INT    cchAttQName = 0;
            PCWSTR pszAttValue = NULL;
            INT    cchAttValue = 0;

            //
            // Get the attribute data ready to write out
            //
            if (SUCCEEDED(hr = pAttributes->getName(cIndex,
                                                    &pszAttUri,
                                                    &cchAttUri,
                                                    &pszAttName,
                                                    &cchAttName,
                                                    &pszAttQName,
                                                    &cchAttQName)) &&
                SUCCEEDED(hr = pAttributes->getValue(cIndex, &pszAttValue, &cchAttValue)))
            {
                try
                {
                    CComBSTR bstrAttName(cchAttQName, pszAttQName);
                    CComBSTR bstrAttValue(cchAttValue, pszAttValue);

                    //
                    // Delimit attributes with a space
                    //
                    cstrOut.Append(L" ");

                    //
                    // Reconstruct the attribute and write back to
                    // the fixed page
                    //
                    cstrOut.Append(bstrAttName);
                    cstrOut.Append(L"=\"");

                    //
                    // If this is a UnicodeString we may need to escape entities
                    //
                    if (bstrAttName == L"UnicodeString")
                    {
                        hr = EscapeEntity(&bstrAttValue);
                    }

                    cstrOut.Append(bstrAttValue);
                    cstrOut.Append(L"\"");
                }
                catch (CXDException& e)
                {
                    hr = e;
                }
            }
        }

        //
        // Close the fixed page tag
        //
        if (SUCCEEDED(hr))
        {
            try
            {
                cstrOut.Append(L"/>");
            }
            catch (CXDException& e)
            {
                hr = e;
            }
        }

        //
        // Write out the empty page
        //
        if (SUCCEEDED(hr))
        {
            hr = WriteToPrintStream(&cstrOut, m_pWriter);
        }
    }

    ERR_ON_HR(hr);
    return hr;
}


/*++

Routine Name:

    CBkSaxHandler::startDocument

Routine Description:

    SAX handler method which handles the start document call to ensure
    the xml version is correctly set

Arguments:

    None

Return Value:

    HRESULT
    S_OK - On success
    E_*  - On error

--*/
HRESULT STDMETHODCALLTYPE
CBkSaxHandler::startDocument(
    void
    )
{
    HRESULT hr = S_OK;

    try
    {
        if (SUCCEEDED(hr = CHECK_POINTER(m_pWriter, E_FAIL)))
        {
            CStringXDW cstrOut(L"<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            hr = WriteToPrintStream(&cstrOut, m_pWriter);
        }
    }
    catch (CXDException& e)
    {
        hr = e;
    }

    ERR_ON_HR(hr);
    return hr;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
94-欧美-setu| 中文字幕亚洲一区二区va在线| 成人小视频免费观看| 亚洲午夜视频在线| 久久先锋影音av| 国产日韩欧美综合在线| 精品99999| 欧美不卡激情三级在线观看| 欧美一区二区三区在线观看视频| 欧美日韩国产高清一区二区| 欧美日韩精品电影| 欧美亚洲日本一区| 欧美一区二区三级| 国产视频一区在线播放| 国产精品你懂的| 自拍偷拍欧美精品| 亚洲国产aⅴ天堂久久| 人人狠狠综合久久亚洲| 天使萌一区二区三区免费观看| 视频一区中文字幕| 国模大尺度一区二区三区| 成人午夜电影小说| 在线精品视频一区二区三四| 欧美一区二区三区啪啪| 日本一区二区视频在线观看| 国产精品女同一区二区三区| 国产精品久久久久国产精品日日| 亚洲夂夂婷婷色拍ww47| 日本在线播放一区二区三区| 国产99一区视频免费| 欧美综合亚洲图片综合区| 91麻豆精品国产91久久久久久久久| 欧美成人a在线| 综合久久给合久久狠狠狠97色| 丝袜a∨在线一区二区三区不卡 | 日本伊人午夜精品| 高清shemale亚洲人妖| 欧美自拍偷拍午夜视频| 久久女同互慰一区二区三区| 亚洲一区二区三区中文字幕 | 2023国产精品| 中文字幕第一页久久| 亚洲综合色噜噜狠狠| 亚洲18色成人| 国产精一区二区三区| 欧洲精品中文字幕| 亚洲精品一区二区三区99| 亚洲一线二线三线视频| 国v精品久久久网| 884aa四虎影成人精品一区| 国产欧美综合在线观看第十页| 亚洲午夜视频在线| 精品一区二区成人精品| 欧美高清激情brazzers| 亚洲欧洲一区二区在线播放| 美女久久久精品| 一本久道久久综合中文字幕| 欧美电影免费观看完整版| 亚洲一区二区精品视频| 成人免费看的视频| 2023国产一二三区日本精品2022| 视频一区二区国产| 欧美日韩一区三区| 一区二区三区自拍| 日本韩国精品一区二区在线观看| 国产欧美日韩精品一区| 国产在线日韩欧美| 精品av久久707| 狠狠色狠狠色综合| 欧美成人aa大片| 国产一区二区三区日韩 | 国产一区在线观看视频| 欧美日韩免费高清一区色橹橹| 一区二区国产视频| 欧美伊人精品成人久久综合97| 最新中文字幕一区二区三区| 成人a区在线观看| 亚洲人精品午夜| 99精品国产一区二区三区不卡| 中文字幕亚洲不卡| 99久久久久久99| 一区二区三区欧美亚洲| 色婷婷亚洲婷婷| 亚洲小少妇裸体bbw| 欧美精品在线视频| 蜜桃一区二区三区在线| 久久久久久99精品| 成人高清伦理免费影院在线观看| 国产精品二三区| 色婷婷综合久久久久中文一区二区 | 久久久精品国产免大香伊| 国产伦精品一区二区三区视频青涩 | 日本不卡的三区四区五区| 欧美一级黄色录像| 国产剧情一区在线| 亚洲人成网站在线| 欧美一区二区三区人| 国产精品一区二区在线看| 最新国产精品久久精品| 在线观看日韩电影| 精品一区二区三区日韩| 欧美国产一区在线| 欧美日韩国产一二三| 黑人巨大精品欧美黑白配亚洲| 久久精品无码一区二区三区| 色菇凉天天综合网| 美女视频第一区二区三区免费观看网站| 26uuu久久天堂性欧美| 91在线一区二区三区| 日韩电影在线免费观看| 国产欧美精品一区二区色综合| 欧美在线影院一区二区| 黄色资源网久久资源365| 亚洲精品视频免费观看| 精品福利在线导航| 在线观看免费亚洲| 国产精品一区二区不卡| 婷婷久久综合九色综合绿巨人| 日本一区二区三区dvd视频在线| 欧美色网一区二区| 床上的激情91.| 久久精品国产在热久久| 一区二区三区四区在线播放| 欧美肥妇bbw| 色综合久久久久| 国产成人精品免费视频网站| 天天操天天干天天综合网| 中文字幕一区二区在线观看| 欧美大胆人体bbbb| 欧美午夜宅男影院| 91老司机福利 在线| 国产乱码字幕精品高清av| 天堂va蜜桃一区二区三区| 一区二区三区精品视频| 国产精品久久网站| 国产精品视频一二三区| 久久综合久久鬼色| 日韩美女在线视频| 欧美一区二区视频在线观看2020| 91精品办公室少妇高潮对白| 不卡一卡二卡三乱码免费网站| 国产精品一区二区视频| 国产综合色在线| 国产一区二三区| 久久国产剧场电影| 久久国产精品第一页| 免费成人在线视频观看| 日本中文字幕一区| 奇米精品一区二区三区四区| 秋霞电影一区二区| 男人操女人的视频在线观看欧美| 日韩国产一二三区| 日本成人在线视频网站| 麻豆中文一区二区| 精品一区二区成人精品| 精品一区二区三区在线播放| 国内精品免费**视频| 国产精品白丝av| 成人av午夜电影| 色欲综合视频天天天| 欧美色综合网站| 日韩欧美精品在线视频| 久久久精品蜜桃| 成人免费一区二区三区在线观看| 亚洲视频每日更新| 一区二区三区中文字幕| 青椒成人免费视频| 国产伦精品一区二区三区在线观看| 韩国av一区二区| 91亚洲国产成人精品一区二区三 | 亚洲h动漫在线| 另类中文字幕网| 国产精品18久久久久| 91免费国产在线观看| 欧美日韩和欧美的一区二区| 欧美xxxx老人做受| 国产精品视频一二| 日本美女一区二区三区视频| 国产在线不卡一区| 一本一本大道香蕉久在线精品| 欧美亚洲综合久久| 久久精品夜夜夜夜久久| 亚洲三级在线看| 久久99精品久久久久久久久久久久 | 欧美精品第1页| 久久免费午夜影院| 亚洲综合视频在线| 国内精品久久久久影院薰衣草| 一本色道久久综合狠狠躁的推荐| 欧美一区二区三区色| 亚洲色图20p| 国产精品白丝jk白祙喷水网站| 欧美性xxxxx极品少妇| 国产欧美日韩在线观看| 亚洲成人高清在线| 国产精品一区二区你懂的| 欧美精品自拍偷拍| 亚洲免费av网站| 高清视频一区二区| 日韩久久久久久|