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

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

?? document.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/*
 * DOCUMENT.CPP
 * Patron Chapter 20
 *
 * Implementation of the CPatronDoc derivation of CDocument that
 * manages pages for us.
 *
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
 *
 * Kraig Brockschmidt, Microsoft
 * Internet  :  kraigb@microsoft.com
 * Compuserve:  >INTERNET:kraigb@microsoft.com
 */


#include "patron.h"
#include <memory.h>
#include <dlgs.h>       //Pring Dlg button IDs


/*
 * CPatronDoc::CPatronDoc
 * CPatronDoc::~CPatronDoc
 *
 * Constructor Parameters:
 *  hInst           HINSTANCE of the application.
 *  pFR             PCFrame of the frame object.
 *  pAdv            PCDocumentAdviseSink to notify on events.
 */

CPatronDoc::CPatronDoc(HINSTANCE hInst, PCFrame pFR
    , PCDocumentAdviseSink pAdv)
    : CDocument(hInst, pFR, pAdv)
    {
    m_pPG=NULL;
    m_lVer=VERSIONCURRENT;
    m_pIStorage=NULL;
    m_fPrintSetup=TRUE;
    m_pDropTarget=NULL;

    //These CFSTR_* values are standard (defined in INC\CLASSLIB.H)
    m_cfEmbeddedObject=RegisterClipboardFormat
        (CFSTR_EMBEDDEDOBJECT);
    m_cfObjectDescriptor=RegisterClipboardFormat
        (CFSTR_OBJECTDESCRIPTOR);

    //CHAPTER20MOD
    m_cfLinkSource=RegisterClipboardFormat(CFSTR_LINKSOURCE);
    m_cfLinkSrcDescriptor=RegisterClipboardFormat
        (CFSTR_LINKSRCDESCRIPTOR);

    m_fShowTypes=FALSE;
    //End CHAPTER20MOD
    return;
    }


CPatronDoc::~CPatronDoc(void)
    {
    if (NULL!=m_pPG)
        delete m_pPG;

    ReleaseInterface(m_pIStorage);
    CoFreeUnusedLibraries();
    return;
    }





/*
 * CPatronDoc::Init
 *
 * Purpose:
 *  Initializes an already created document window.  The client
 *  actually creates the window for us, then passes that here for
 *  further initialization.
 *
 * Parameters:
 *  pDI             PDOCUMENTINIT containing initialization
 *                  parameters.
 *
 * Return Value:
 *  BOOL            TRUE if the function succeeded, FALSE otherwise.
 */

BOOL CPatronDoc::Init(PDOCUMENTINIT pDI)
    {
    //Change the stringtable range to our customization.
    pDI->idsMin=IDS_DOCUMENTMIN;
    pDI->idsMax=IDS_DOCUMENTMAX;

    //Do default initialization
    if (!CDocument::Init(pDI))
        return FALSE;

    //Pages are created when we get a Load later.
    return TRUE;
    }







/*
 * CPatronDoc::FMessageHook
 *
 * Purpose:
 *  Processes WM_SIZE for the document so we can resize the Pages
 *  window.
 *
 * Parameters:
 *  <WndProc Parameters>
 *  pLRes           LRESULT * in which to store the return
 *                  value for the message.
 *
 * Return Value:
 *  BOOL            TRUE to prevent further processing,
 *                  FALSE otherwise.
 */

BOOL CPatronDoc::FMessageHook(HWND hWnd, UINT iMsg, WPARAM wParam
    , LPARAM lParam, LRESULT *pLRes)
    {
    UINT        dx, dy;
    RECT        rc;

    *pLRes=0;

    //Eat to prevent flickering
    if (WM_ERASEBKGND==iMsg)
        return TRUE;

    if (WM_SIZE==iMsg && NULL!=m_pPG)
        {
        dx=LOWORD(lParam);
        dy=HIWORD(lParam);

        if (SIZE_MINIMIZED!=wParam)
            {
            //Resize Pages window to fit the new document size.
            GetClientRect(hWnd, &rc);
            m_pPG->RectSet(&rc, FALSE);
            }
        }

    if (WM_DESTROY==iMsg)
        {
        /*
         * We have to revoke the drop target here because the window
         * will be destroyed and the property forcefully removed
         * before we could do this in the destructor.
         */
        if (NULL!=m_pDropTarget)
            {
            RevokeDragDrop(m_hWnd);
            CoLockObjectExternal(m_pDropTarget, FALSE, TRUE);
            m_pDropTarget->Release();
            }

        return FALSE;
        }

    /*
     * We return FALSE even on WM_SIZE so we can let the default
     * procedure handle maximized MDI child windows appropriately.
     */
    return FALSE;
    }







/*
 * CPatronDoc::Clear
 *
 * Purpose:
 *  Sets all contents in the document back to defaults with no
 *  filename.
 *
 * Paramters:
 *  None
 *
 * Return Value:
 *  None
 */

void CPatronDoc::Clear(void)
    {
    //Completely reset the pages
    if (NULL!=m_pPG)
        m_pPG->StorageSet(NULL, FALSE, FALSE);

    CDocument::Clear();
    m_lVer=VERSIONCURRENT;
    return;
    }




/*
 * CPatronDoc::FDirtyGet
 *
 * Purpose:
 *  Returns the current dirty status of the document.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  BOOL            TRUE if the file is clean, FALSE otherwise.
 */

BOOL CPatronDoc::FDirtyGet()
    {
    BOOL    fPageDirty;

    fPageDirty=m_pPG->FIsDirty();
    return m_fDirty | fPageDirty;
    }





/*
 * CPatronDoc::Delete
 *
 * Purpose:
 *  Removed the current object from the document.
 *
 * Paramters:
 *  None
 *
 * Return Value:
 *  None
 */

void CPatronDoc::Delete(void)
    {
    if (NULL!=m_pPG)
        m_pPG->TenantDestroy();

    CoFreeUnusedLibraries();
    return;
    }





/*
 * CPatronDoc::FQueryObjectSelected
 *
 * Purpose:
 *  Returns whether or not there is an object selected in this
 *  document for Cut, Copy, Delete functions.
 *
 * Parameters:
 *  hMenu           HMENU of the Edit menu.
 *
 * Return Value:
 *  BOOL            TRUE if we have an object, FALSE otherwise.
 */

BOOL CPatronDoc::FQueryObjectSelected(HMENU hMenu)
    {
    return m_pPG->FQueryObjectSelected(hMenu);
    }





/*
 * CPatronDoc::Load
 *
 * Purpose:
 *  Loads a given document without any user interface overwriting
 *  the previous contents of the editor.
 *
 * Parameters:
 *  fChangeFile     BOOL indicating if we're to update the window
 *                  title and the filename from using this file.
 *  pszFile         LPTSTR to the filename to load.  Could be NULL
 *                  for an untitled document.
 *
 * Return Value:
 *  UINT            An error value from DOCERR_*
 */

UINT CPatronDoc::Load(BOOL fChangeFile, LPTSTR pszFile)
    {
    RECT        rc;
    LPSTORAGE   pIStorage;
    HRESULT     hr;
    CLSID       clsID;
    DWORD       dwMode=STGM_TRANSACTED | STGM_READWRITE
                    | STGM_SHARE_EXCLUSIVE;

    if (NULL==pszFile)
        {
        //Create a new temp file.
        hr=StgCreateDocfile(NULL, dwMode | STGM_CREATE
            | STGM_DELETEONRELEASE, 0, &pIStorage);

        //Mark this our class since we check with ReadClassStg.
        if (SUCCEEDED(hr))
            WriteClassStg(pIStorage, CLSID_PatronPages);
        }
    else
        {
        hr=StgOpenStorage(pszFile, NULL, dwMode, NULL, 0, &pIStorage);
        }

    if (FAILED(hr))
        return DOCERR_COULDNOTOPEN;

    //Check if this is our type of file and exit if not.
    hr=ReadClassStg(pIStorage, &clsID);

    if (FAILED(hr) || CLSID_PatronPages!=clsID)
        {
        pIStorage->Release();
        return DOCERR_READFAILURE;
        }

    //Attempt to create our contained Pages window.
    m_pPG=new CPages(m_hInst, m_cf);
    GetClientRect(m_hWnd, &rc);

    if (!m_pPG->Init(m_hWnd, &rc, WS_CHILD | WS_VISIBLE
        , ID_PAGES, NULL))
        {
        pIStorage->Release();
        return DOCERR_READFAILURE;
        }

    if (!m_pPG->StorageSet(pIStorage, FALSE, (NULL==pszFile)))
        {
        pIStorage->Release();
        return DOCERR_READFAILURE;
        }

    //Open the window up for drag-drop
    m_pDropTarget=new CDropTarget(this);

    if (NULL!=m_pDropTarget)
        {
        m_pDropTarget->AddRef();
        CoLockObjectExternal(m_pDropTarget, TRUE, FALSE);
        RegisterDragDrop(m_hWnd, m_pDropTarget);
        }

    m_pIStorage=pIStorage;
    Rename(pszFile);

    //Do initial setup if new file, otherwise Pages handles things.
    if (NULL==pszFile)
        {
        //Go initialize the Pages for the default printer.
        if (!PrinterSetup(NULL, TRUE))
            return DOCERR_COULDNOTOPEN;

        //Go create an initial page.
        m_pPG->PageInsert(0);
        }
    else
        {
        //Can't change an already saved configuration
        m_fPrintSetup=FALSE;
        }

    FDirtySet(FALSE);
    return DOCERR_NONE;
    }







/*
 * CPatronDoc::Save
 *
 * Purpose:
 *  Writes the file to a known filename, requiring that the user
 *  has previously used FileOpen or FileSaveAs in order to have
 *  a filename.
 *
 * Parameters:
 *  uType           UINT indicating the type of file the user
 *                  requested to save in the File Save As dialog.
 *  pszFile         LPTSTR under which to save.  If NULL, use the
 *                  current name.
 *
 * Return Value:
 *  UINT            An error value from DOCERR_*
 */

UINT CPatronDoc::Save(UINT uType, LPTSTR pszFile)
    {
    HRESULT     hr;
    LPSTORAGE   pIStorage;

    //Save or Save As with the same file is just a commit.
    if (NULL==pszFile
        || (NULL!=pszFile && 0==lstrcmpi(pszFile, m_szFile)))
        {
        WriteFmtUserTypeStg(m_pIStorage, m_cf
            , PSZ(IDS_CLIPBOARDFORMAT));

        //Insure pages are up to date.
        m_pPG->StorageUpdate(FALSE);

        //Commit everyting
        m_pIStorage->Commit(STGC_DEFAULT);

        FDirtySet(FALSE);
        return DOCERR_NONE;
        }

    /*
     * When we're given a name, open the storage, creating it new
     * if it does not exist or overwriting the old one.  Then CopyTo
     * from the current to the new, Commit the new, Release the old.
     */

    hr=StgCreateDocfile(pszFile, STGM_TRANSACTED | STGM_READWRITE
        | STGM_CREATE | STGM_SHARE_EXCLUSIVE, 0, &pIStorage);

    if (FAILED(hr))
        return DOCERR_COULDNOTOPEN;

    WriteClassStg(pIStorage, CLSID_PatronPages);
    WriteFmtUserTypeStg(pIStorage, m_cf, PSZ(IDS_CLIPBOARDFORMAT));

    //Insure all pages are up-to-date.
    m_pPG->StorageUpdate(TRUE);

    //This also copies the CLSID we stuff in here on file creation.
    hr=m_pIStorage->CopyTo(NULL, NULL, NULL, pIStorage);

    if (FAILED(hr))
        {
        SCODE       sc;

        pIStorage->Release();
        sc=GetScode(hr);

        /*
         * If we failed because of low memory, use IRootStorage
         * to switch into the new file.
         */
        if (E_OUTOFMEMORY==sc)
            {
            LPROOTSTORAGE        pIRoot;

            //Delete file we already created
            DeleteFile(pszFile);

            if (FAILED(m_pIStorage->QueryInterface
                (IID_IRootStorage, (PPVOID)&pIRoot)))
                return DOCERR_WRITEFAILURE;

           #ifdef WIN32ANSI
            OLECHAR     szTemp[MAX_PATH];

            MultiByteToWideChar(CP_ACP, 0, pszFile, -1, szTemp, MAX_PATH);
            hr=pIRoot->SwitchToFile(szTemp);
           #else
            hr=pIRoot->SwitchToFile(pszFile);
           #endif
            pIRoot->Release();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费看片| 91在线国内视频| 日韩精品在线看片z| 日本不卡一二三区黄网| 欧美日韩精品专区| 亚洲丶国产丶欧美一区二区三区| 成人免费毛片片v| 中文字幕视频一区二区三区久| 东方欧美亚洲色图在线| 精品一区二区三区在线播放视频 | 欧美吞精做爰啪啪高潮| 蜜臀av一区二区三区| 夜夜精品浪潮av一区二区三区| 欧美mv日韩mv国产网站app| 99久久综合国产精品| 精品一区二区三区av| 欧美激情一区二区三区不卡 | 亚洲乱码国产乱码精品精的特点 | 国产美女视频一区| 国产欧美1区2区3区| 一本在线高清不卡dvd| 日本美女一区二区三区| 日本一区二区三区四区在线视频| 91片在线免费观看| 美女在线视频一区| 亚洲福利一二三区| 91精品国产手机| 久久成人久久爱| 国产精品丝袜久久久久久app| 91视频精品在这里| 国产一区二区视频在线| 亚洲一区在线电影| 国产精品素人视频| 精品理论电影在线| 欧美日本视频在线| 91麻豆自制传媒国产之光| 精油按摩中文字幕久久| 亚洲综合激情另类小说区| 久久青草欧美一区二区三区| 在线不卡中文字幕| 91丨porny丨国产入口| 国产成人免费高清| 久久91精品国产91久久小草| 污片在线观看一区二区| 另类小说视频一区二区| 成人动漫一区二区| 777久久久精品| 亚洲欧美国产高清| 亚洲va国产天堂va久久en| 五月婷婷激情综合| 久久99精品网久久| 成人在线视频一区二区| 国产成人在线观看| 欧美日韩中文字幕精品| 日韩精品一区二区三区中文精品| 日韩视频一区二区在线观看| 精品久久久久久久久久久久久久久久久 | 亚洲第一福利视频在线| 国产激情精品久久久第一区二区| 美女精品一区二区| 色女孩综合影院| 成人av先锋影音| 欧美一区二区三区免费观看视频| 国产精品久久久久久久岛一牛影视| 午夜免费欧美电影| 91浏览器在线视频| 国产精品美女久久久久av爽李琼 | 亚洲欧美激情视频在线观看一区二区三区| 欧美日韩久久一区| 亚洲国产综合视频在线观看| 亚洲一区二区三区影院| 亚洲gay无套男同| 亚洲视频 欧洲视频| 亚洲一区二区三区精品在线| 蜜臀av一级做a爰片久久| 欧美精品aⅴ在线视频| 亚洲卡通动漫在线| 欧美艳星brazzers| 91麻豆精品国产自产在线观看一区 | 91福利资源站| 欧美一区二区三区播放老司机| 久久久久99精品国产片| 亚洲免费伊人电影| 久久99精品久久久| 一本色道综合亚洲| 精品成人一区二区| 中文字幕在线不卡视频| 国产成人av福利| 97久久人人超碰| 日韩女优制服丝袜电影| 亚洲欧洲日产国产综合网| 婷婷六月综合网| 9久草视频在线视频精品| 91激情五月电影| 欧美一区二区三区男人的天堂| 精品久久99ma| 一区二区三区四区不卡在线| 韩国精品主播一区二区在线观看| 国产女主播一区| 欧美日韩精品二区第二页| 国产精华液一区二区三区| 欧美图区在线视频| 国产精品毛片大码女人| 久久精品国产一区二区三 | 欧美一级电影网站| 亚洲视频1区2区| 国产乱色国产精品免费视频| 欧美日韩一区二区三区四区五区| 欧美激情一区二区三区| 捆绑调教一区二区三区| 欧美无砖专区一中文字| 国产精品美女久久久久久久 | 亚洲欧洲国产日本综合| 精品一区二区成人精品| 欧美日本不卡视频| 一区二区理论电影在线观看| 成人一道本在线| 亚洲精品一线二线三线| 石原莉奈在线亚洲二区| 欧美午夜在线观看| 亚洲美女区一区| 不卡电影一区二区三区| 久久久久久久久久久电影| 日本aⅴ亚洲精品中文乱码| 欧美日韩久久久久久| 亚洲国产精品尤物yw在线观看| 97久久精品人人做人人爽50路| 欧美激情在线免费观看| 成人一区二区视频| 国产色综合一区| 国产成人综合自拍| aaa亚洲精品| 欧美在线免费观看亚洲| 中文字幕欧美一区| 99国产欧美久久久精品| 国产精品国产三级国产aⅴ中文| 大尺度一区二区| 中文字幕精品一区二区精品绿巨人 | 看电视剧不卡顿的网站| 欧美岛国在线观看| 国内偷窥港台综合视频在线播放| 欧美va亚洲va国产综合| 狠狠色丁香婷综合久久| 精品国产凹凸成av人导航| 狠狠久久亚洲欧美| 久久女同精品一区二区| 国产91露脸合集magnet| 国产精品色呦呦| 91视频在线观看免费| 亚洲小说欧美激情另类| 欧美一区二区二区| 狠狠久久亚洲欧美| 国产精品色哟哟| 欧美最猛性xxxxx直播| 亚洲va在线va天堂| 日韩一区二区精品在线观看| 激情综合色播五月| 中文字幕不卡在线播放| 91美女片黄在线观看91美女| 亚洲444eee在线观看| 日韩一卡二卡三卡国产欧美| 激情五月播播久久久精品| 国产精品视频九色porn| 欧美这里有精品| 久久精品国内一区二区三区| 中文字幕av一区二区三区免费看| av激情亚洲男人天堂| 亚洲一区二区三区美女| 欧美mv和日韩mv的网站| caoporn国产一区二区| 亚洲大型综合色站| 久久婷婷成人综合色| av激情亚洲男人天堂| 日韩电影在线免费看| 国产色综合一区| 欧美日韩高清一区二区三区| 国产一区美女在线| 亚洲日本欧美天堂| 日韩欧美高清dvd碟片| 99这里只有精品| 蜜桃一区二区三区在线观看| 国产精品久久福利| 欧美一级电影网站| 色综合久久久网| 狠狠色综合日日| 亚洲国产精品久久久久秋霞影院| 久久久久久影视| 欧美日韩国产首页| 高清不卡一区二区| 天堂一区二区在线| 亚洲三级在线免费观看| 精品国产人成亚洲区| 欧美色爱综合网| a美女胸又www黄视频久久| 精品一区二区综合| 亚洲v精品v日韩v欧美v专区| 久久99精品久久久久久国产越南 | 偷拍日韩校园综合在线| 国产精品二区一区二区aⅴ污介绍| 91精品国产91久久久久久一区二区|