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

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

?? print.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

    /*
     * Read size of the DEVICECONFIG structure including variable
     * portion of DEVMODE.  We need to load all this information
     * for CreateIC.  To this size we'll add the size of
     * DVTARGETDEVICE in order to allocate a COMBINEDEVICE.
     */

    pIStream->Read(&cb, sizeof(DWORD), &cbRead);

    pcd=(PCOMBINEDEVICE)pIMalloc->Alloc(cb+sizeof(DVTARGETDEVICE));

    if (NULL==pcd)
        {
        pIMalloc->Release();
        pIStream->Release();
        return FALSE;
        }

    //Now get the real information.
    LISet32(li, 0);
    pIStream->Seek(li, STREAM_SEEK_SET, NULL);
    pIStream->Read(&(pcd->dc), cb, &cbRead);
    pIStream->Release();


    /*
     * If requested, complete the DVTARGETDEVICE structure in
     * pcd and store pcd in *ppcd for return.
     */

    if (NULL!=ppcd)
        {
        WORD    cb=sizeof(DVTARGETDEVICE);

        pcd->td.tdSize=cb;
        pcd->td.tdExtDevmodeOffset=cb;
        pcd->td.tdDriverNameOffset=cb+sizeof(DEVMODE);
        pcd->td.tdDeviceNameOffset=cb+sizeof(DEVMODE)
            +(CCHDEVICENAME*sizeof(TCHAR));
        pcd->td.tdPortNameOffset  =cb+sizeof(DEVMODE)
            +(CCHDEVICENAME*2*sizeof(TCHAR));

        *ppcd=pcd;
        }

    //Create an IC if requested.
    if (NULL!=phDC)
        {
        //Get the DC then configure
        *phDC=CreateIC(pcd->dc.szDriver, pcd->dc.szDevice
            , pcd->dc.szPort, &(pcd->dc.dm));

        if (NULL==*phDC)
            return FALSE;
        }

    //pcd is a temporary allocation in this case
    if (NULL==ppcd)
        pIMalloc->Free(pcd);

    pIMalloc->Release();
    return (NULL!=*phDC);
    }
//End CHAPTER12MOD





/*
 * CPages::ConfigureForDevice
 *
 * Purpose:
 *  Recalculates our drawing configuration based on the contents of
 *  an hDC.  If no HDC is given we use the contents of our DevMode
 *  stream.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  BOOL            TRUE if successful, FALSE otherwise.
 */

BOOL CPages::ConfigureForDevice(void)
    {
    POINT           ptOffset, ptPaper;
    RECT            rc;
    HDC             hDC;
    CHourglass      hg;

    //CHAPTER12MOD
    if (!DevReadConfig(NULL, &hDC))
        return FALSE;
    //End CHAPTER12MOD

    //Get usable page dimensions:  already sensitive to orientation
    m_cx=GetDeviceCaps(hDC, HORZSIZE)*10-16; //*10: mm to LOMETRIC
    m_cy=GetDeviceCaps(hDC, VERTSIZE)*10-16; //-16: for driver bugs.

    //Calculate the printer-limited margins on sides in LOMETRIC.
    Escape(hDC, GETPRINTINGOFFSET, NULL, NULL, &ptOffset);
    Escape(hDC, GETPHYSPAGESIZE,   NULL, NULL, &ptPaper);

    SetRect(&rc, ptOffset.x, ptOffset.y, ptPaper.x, ptPaper.y);
    SetMapMode(hDC, MM_LOMETRIC);
    RectConvertMappings(&rc, hDC, FALSE);

    //Left and top margins are the printing offset.
    m_xMarginLeft= rc.left+8;   //+8 to match -16 above
    m_yMarginTop =-rc.top+8;    //LOMETRIC makes this negative.

    //Right is (paper width)-(usable width)-(left margin)
    m_xMarginRight =rc.right-m_cx-m_xMarginLeft;

    //Bottom is (paper height)-(usable height)-(top margin)+1
    m_yMarginBottom=-rc.bottom-m_cy-m_yMarginTop+1;

    UpdateScrollRanges();

    DeleteDC(hDC);
    return TRUE;
    }




/*
 * CPages::Print
 *
 * Purpose:
 *  Prints a specified range of pages to a given hDC.  Repeats for
 *  a given number of copies.
 *
 * Parameters:
 *  hDC             HDC to which we print.
 *  pszDoc          LPTSTR providing the document name.
 *  dwFlags         DWORD flags from PrintDlg
 *  iPageStart      UINT starting page index (one based)
 *  iPageEnd        UINT ending page index (one based).  Includes
 *                  this page.
 *  cCopies         UINT number of copies to print.  If PD_COLLATE
 *                  in dwFlags is set, we print multiple copies of
 *                  each page as we cycle through.  Otherwise we
 *                  cycle multiple times.
 *
 * Return Value:
 *  None
 */

BOOL CPages::Print(HDC hDC, LPTSTR pszDoc, DWORD dwFlags
    , UINT iPageStart, UINT iPageEnd, UINT cCopies)
    {
    BOOL        fError=FALSE;
    int         iPage, iPageInc;
    int         iUserPage, cPages;
    UINT        iRepeat, cRepeat;
    UINT        iCycle, cCycles;
    UINT        iPageHold=m_iPageCur;
    HWND        hWndT, hWndTop=NULL;
    DOCINFO     di;
    PCDocument  pDoc;

    //Validate hDC and page ranges
    if (NULL==hDC)
        return FALSE;

    if ((PD_PAGENUMS & dwFlags))
        {
        if (-1==iPageStart)
            iPageStart=0;
        else
            iPageStart--;   //Switch to zero offset.

        if (-1==iPageEnd)
            iPageEnd=m_cPages-1;
        else
            iPageEnd--;     //Switch to zero offset.
        }
    else //Can't test PD_ALLPAGES with & since it's defined as 0L
        {
        iPageStart=0;
        iPageEnd=m_cPages-1;
        }

    //Arrange cycles and repeats depending on cCopies and collating
    if (PD_COLLATE & dwFlags)
        {
        cCycles=cCopies;
        cRepeat=1;
        }
    else
        {
        cCycles=1;
        cRepeat=cCopies;
        }

    //Disable the frame window to prevent reentrancy while printing.
    hWndT=GetParent(m_hWnd);
    pDoc=(PCDocument)SendMessage(hWndT, DOCM_PDOCUMENT, 0, 0L);

    if (NULL!=pDoc)
        {
        PCFrame pFR;

        pFR=pDoc->FrameGet();
        hWndTop=pFR->Window();
        EnableWindow(hWndTop, FALSE);
        }

    SetAbortProc(hDC, AbortProc);
    g_fCancelPrint=FALSE;

    //If these don't work then we'll just live without a dialog.
    g_hDlgPrint=CreateDialog(m_hInst, MAKEINTRESOURCE(IDD_PRINTING)
        , hWndTop, PrintDlgProc);

    //Increment for either direction.
    iPageInc=(iPageStart > iPageEnd) ? -1 : 1;

    //Initial entries in dialog box.
    cPages=1+((int)(iPageEnd-iPageStart)*iPageInc);

    SendMessage(g_hDlgPrint, PRINTM_PAGEUPDATE, 1, (LPARAM)cPages);
    SendMessage(g_hDlgPrint, PRINTM_COPYUPDATE, 1, (LPARAM)cRepeat);

    di.cbSize=sizeof(DOCINFO);
    di.lpszDocName=pszDoc;
    di.lpszOutput=NULL;

    if (StartDoc(hDC, &di) > 0)
        {
        /*
         * Iterate over the pages, repeating each page depending on
         * the copies we want and if we have collate enabled.
         */

        for (iCycle=1; iCycle <= cCycles; iCycle++)
            {
            if (PD_COLLATE & dwFlags)
                {
                SendMessage(g_hDlgPrint, PRINTM_COPYUPDATE, iCycle
                    , (LPARAM)cCycles);
                }

            //iPageInc controls direction
            for (iPage=iPageStart; ; iPage+=iPageInc)
                {
                iUserPage=1+((iPage-(int)iPageStart)*iPageInc);

                SendMessage(g_hDlgPrint, PRINTM_PAGEUPDATE
                    , iUserPage, (LPARAM)cPages);

                m_iPageCur=iPage;   //We restore this later.

                for (iRepeat=1; iRepeat <= cRepeat; iRepeat++)
                    {
                    if (!(PD_COLLATE & dwFlags))
                        {
                        SendMessage(g_hDlgPrint, PRINTM_COPYUPDATE
                            , iRepeat, (LPARAM)cRepeat);
                        }

                    StartPage(hDC);
                    Draw(hDC, TRUE, TRUE);

                    if (EndPage(hDC) < 0)
                        fError=TRUE;

                    if (fError || g_fCancelPrint)
                        break;
                    }

                if (fError || g_fCancelPrint)
                    break;

                //If we just printed the last page, time to quit.
                if (iPage==(int)iPageEnd)
                    break;
                }

            if (fError || g_fCancelPrint)
                break;
            }

        if (!fError)
            EndDoc(hDC);
        else
            AbortDoc(hDC);
        }
    else
        fError=TRUE;

    //Set the page back to what it was before all this started.
    m_iPageCur=iPageHold;

    EnableWindow(hWndTop, TRUE);
    SetFocus(hWndTop);
    DestroyWindow(g_hDlgPrint);
    DeleteDC(hDC);
    return !fError;
    }






/*
 * AbortProc
 *
 * Purpose:
 *  Abort procedure for printing the pages.
 *
 * Parameters:
 *  hDC             HDC on which printing is happening.
 *  iErr            int error code.
 *
 * Return Value:
 *  BOOL            TRUE to continue the print job, FALSE otherwise.
 */

BOOL APIENTRY AbortProc(HDC hDC, int iErr)
    {
    MSG     msg;

    while (!g_fCancelPrint
        && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
        if (NULL==g_hDlgPrint
            || !IsDialogMessage(g_hDlgPrint, &msg))
            {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
            }
        }

    return !g_fCancelPrint;
    }




/*
 * PrintDlgProc
 *
 * Purpose:
 *  Modeless dialog procedure for the dialog displayed while Patron
 *  is printing pages.
 */

BOOL APIENTRY PrintDlgProc(HWND hDlg, UINT iMsg, WPARAM wParam
    , LPARAM lParam)
    {
    TCHAR           szFormat[40];
    TCHAR           szOutput[80];

    switch (iMsg)
        {
        case WM_INITDIALOG:
            EnableMenuItem(GetSystemMenu(hDlg, FALSE), SC_CLOSE
                , MF_GRAYED);
            return TRUE;

        case WM_COMMAND:
            //Cancel button was pressed.
            g_fCancelPrint=TRUE;
            ShowWindow(hDlg, SW_HIDE);
            return TRUE;

        case PRINTM_PAGEUPDATE:
            GetDlgItemText(hDlg, ID_PAGESTRING, szFormat
                , sizeof(szFormat));
            wsprintf(szOutput, szFormat, wParam, (UINT)lParam);
            SetDlgItemText(hDlg, ID_CURRENTPAGE, szOutput);
            return TRUE;

        case PRINTM_COPYUPDATE:
            GetDlgItemText(hDlg, ID_COPYSTRING, szFormat
                , sizeof(szFormat));
            wsprintf(szOutput, szFormat, wParam, (UINT)lParam);
            SetDlgItemText(hDlg, ID_CURRENTCOPY, szOutput);
            return TRUE;
        }

    return FALSE;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区白人| 亚洲午夜久久久久久久久电影院 | 色综合久久久久| 国产成a人亚洲| 国产福利一区二区三区视频| 国产一区在线精品| 黑人巨大精品欧美一区| 国产一区在线观看视频| 国产福利不卡视频| 国产成人a级片| 成人avav在线| 91在线播放网址| 色婷婷av一区二区三区软件 | 日韩网站在线看片你懂的| 欧美精品日日鲁夜夜添| 欧美一级淫片007| 精品剧情在线观看| 国产欧美日本一区视频| 综合久久综合久久| 一区二区三区美女| 天天av天天翘天天综合网色鬼国产| 亚洲不卡一区二区三区| 日韩va欧美va亚洲va久久| 亚洲天堂免费看| 一区av在线播放| 美日韩黄色大片| 国产成人丝袜美腿| 97精品久久久午夜一区二区三区| 色综合天天综合网国产成人综合天 | 亚洲欧美日韩精品久久久久| 亚洲综合视频在线| 日本人妖一区二区| 国内精品伊人久久久久av一坑 | 色网综合在线观看| 欧美老肥妇做.爰bbww| 日韩精品一区二区三区四区视频| 欧美激情资源网| 一区二区三区久久久| 麻豆极品一区二区三区| 不卡的av在线播放| 4438成人网| 国产欧美日韩精品在线| 亚洲国产日产av| 国产精品18久久久久久久久 | 中文字幕亚洲电影| 爽好久久久欧美精品| 国内外成人在线| 色综合中文字幕国产 | 国产精品456露脸| 欧美性videosxxxxx| 久久一留热品黄| 一区二区三区中文字幕电影| 久久激情五月婷婷| 在线观看一区二区视频| 久久久亚洲精华液精华液精华液| 亚洲欧美另类久久久精品2019| 乱一区二区av| 91福利国产成人精品照片| 精品国产免费一区二区三区四区| 亚洲精品精品亚洲| 国产福利不卡视频| 91精品国产品国语在线不卡| 国产精品久99| 国内精品写真在线观看| 欧美视频在线一区二区三区 | 青草av.久久免费一区| 99国产欧美另类久久久精品| 2021久久国产精品不只是精品| 亚洲高清免费在线| 99久久er热在这里只有精品15| 精品欧美一区二区三区精品久久| 亚洲激情成人在线| 在线观看91视频| 久久精品一区二区三区四区| 五月天一区二区三区| 91视频观看免费| 久久久国产一区二区三区四区小说| 日韩精品成人一区二区在线| 91久久精品国产91性色tv| 中文字幕免费观看一区| 国产最新精品免费| 91精品国产色综合久久| 香蕉成人啪国产精品视频综合网| 91麻豆精品在线观看| 中文字幕电影一区| 国产一区二区三区综合| 欧美xxx久久| 日韩精品视频网| 欧美群妇大交群的观看方式| 亚洲一区在线看| 色婷婷av一区二区三区软件 | 国产欧美一区二区三区沐欲| 久久精品国产秦先生| 欧美一区二区三区四区高清| 亚洲国产人成综合网站| 日本精品视频一区二区| 亚洲品质自拍视频网站| 一本色道久久综合亚洲91| 中文字幕一区免费在线观看| 成人免费视频视频| 国产亚洲精品精华液| 国产一区二区导航在线播放| 久久亚洲精精品中文字幕早川悠里 | 亚洲人成7777| 色综合天天性综合| 制服丝袜亚洲网站| 极品少妇一区二区三区精品视频| 久久99国内精品| 亚洲精品在线三区| 国产一区二区按摩在线观看| 精品国产伦一区二区三区观看方式 | 久久嫩草精品久久久精品| 国产美女娇喘av呻吟久久 | 日本视频一区二区| 精品成人佐山爱一区二区| 国内外成人在线| 欧美国产激情二区三区| 91一区二区在线观看| 一区二区三区不卡视频| 欧美日韩精品一区二区三区蜜桃 | 亚洲你懂的在线视频| 色婷婷av一区二区| 午夜视频在线观看一区二区| 欧美一区二区日韩| 国产一区二区网址| 亚洲欧洲日产国产综合网| 色老头久久综合| 婷婷综合五月天| 久久久久久综合| 成+人+亚洲+综合天堂| 一区二区三区影院| 欧美一区二区三区日韩视频| 国产一区二区三区在线观看免费 | 日本欧美加勒比视频| 久久色中文字幕| 99久久精品国产网站| 亚洲电影一级黄| 亚洲精品一区二区三区福利| av网站免费线看精品| 五月激情综合网| 国产日产欧美一区二区三区| 日本高清免费不卡视频| 奇米777欧美一区二区| 亚洲国产精品高清| 欧美日韩一区二区在线视频| 国产在线日韩欧美| 亚洲免费观看高清在线观看| 91麻豆精品91久久久久久清纯| 国产又粗又猛又爽又黄91精品| 国产精品国产三级国产三级人妇 | 久久精品视频免费| 欧美日韩综合在线免费观看| 国产毛片精品国产一区二区三区| 亚洲色图视频免费播放| 精品少妇一区二区三区视频免付费| 成人国产精品免费网站| 青青草原综合久久大伊人精品 | 91视频在线观看| 精品在线观看视频| 亚洲女人的天堂| 国产亚洲欧美激情| 91麻豆精品国产91久久久 | 精品国产一区二区三区忘忧草| 97se亚洲国产综合自在线观| 美女精品一区二区| 亚洲午夜久久久久久久久久久| 久久综合久久99| 欧美日韩精品欧美日韩精品一| www.亚洲免费av| 精品一区二区成人精品| 亚洲一区二区三区四区不卡| 国产精品成人免费精品自在线观看 | 99v久久综合狠狠综合久久| 久久精品国内一区二区三区| 亚洲国产一区二区a毛片| 久久精品欧美一区二区三区不卡| 欧美一区二区视频在线观看2020| 成人免费va视频| 国产一区二区在线电影| 青青草91视频| 国产另类ts人妖一区二区| 五月天亚洲婷婷| 亚洲欧美国产77777| 亚洲国产精品传媒在线观看| www成人在线观看| 日韩欧美中文字幕公布| 欧美日韩亚洲丝袜制服| 91蜜桃免费观看视频| 国产成人av一区| 美女高潮久久久| 蜜桃在线一区二区三区| 天堂va蜜桃一区二区三区| 亚洲影院在线观看| 亚洲人成在线观看一区二区| 国产精品久久久久影院| 久久精品一区二区三区不卡牛牛 | 日韩一区二区三区视频| 欧美日韩国产乱码电影| 欧美三级在线播放| 色中色一区二区|