亚洲欧美第一页_禁久久精品乱码_粉嫩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);
    }





/*
 * 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;

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

    //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一区二区三区免费野_久草精品视频
久久久精品蜜桃| eeuss鲁一区二区三区| 欧美日韩国产综合视频在线观看| 亚洲猫色日本管| 欧洲一区二区av| 蜜桃一区二区三区在线观看| 精品国产91九色蝌蚪| 激情综合网天天干| 欧美国产97人人爽人人喊| 99久久er热在这里只有精品15 | 久久不见久久见中文字幕免费| 日韩午夜在线观看视频| 国产精品99久久久久久似苏梦涵| 国产精品成人在线观看| 欧美日韩免费一区二区三区| 毛片一区二区三区| 国产精品―色哟哟| 欧美三日本三级三级在线播放| 六月婷婷色综合| 国产精品灌醉下药二区| 777久久久精品| 国产成人综合亚洲网站| 亚洲已满18点击进入久久| 制服丝袜在线91| 成人小视频免费在线观看| 亚洲一区二区四区蜜桃| 久久无码av三级| 欧美写真视频网站| 国产乱码一区二区三区| 亚洲国产日产av| 国产亚洲美州欧州综合国| 91成人免费网站| 国产不卡在线一区| 七七婷婷婷婷精品国产| 最新热久久免费视频| 日韩欧美视频在线| 91成人在线观看喷潮| 国产另类ts人妖一区二区| 午夜久久久久久久久久一区二区| 国产精品黄色在线观看| 欧美精品一区二区在线观看| 在线免费一区三区| 成人免费观看男女羞羞视频| 秋霞电影网一区二区| 一区二区三区91| 国产精品灌醉下药二区| 久久久久久久av麻豆果冻| 欧美精选午夜久久久乱码6080| 成人av在线资源| 国产一区在线看| 99视频超级精品| 亚洲美女视频一区| 9l国产精品久久久久麻豆| av一本久道久久综合久久鬼色| 亚洲aⅴ怡春院| 亚洲免费观看高清在线观看| 国产色产综合产在线视频| 日韩欧美中文字幕公布| 欧美日韩免费观看一区三区| 99国内精品久久| 成人黄页毛片网站| 国产精品一级黄| 精品一区二区三区免费观看| 青青青伊人色综合久久| 日韩在线一二三区| 亚洲午夜久久久久久久久电影网| 亚洲日本在线a| 中文字幕日韩一区| 最新国产精品久久精品| 国产精品色婷婷| 中文字幕欧美三区| 中文字幕免费不卡| 国产欧美日韩激情| 日本一区二区三区国色天香| 色一区在线观看| 日韩av中文字幕一区二区三区| 日韩女优av电影| 成人精品鲁一区一区二区| 国产精品一色哟哟哟| 国产精品中文欧美| 国产成人在线视频免费播放| 国产a视频精品免费观看| 国产成人在线色| 成人精品电影在线观看| 91影院在线免费观看| 日本韩国一区二区| 欧美情侣在线播放| 欧美大片在线观看一区| 精品国产乱码久久久久久影片| 久久嫩草精品久久久精品| 国产亚洲精品中文字幕| 国产精品久久久久毛片软件| 玉足女爽爽91| 天天色综合天天| 久久69国产一区二区蜜臀| 国产成人a级片| 99精品热视频| 欧美午夜寂寞影院| 日韩视频在线一区二区| 久久久久久久久久电影| 精品国产乱码久久久久久浪潮| 色综合久久综合中文综合网| av一二三不卡影片| 一本一道久久a久久精品| 欧美日韩精品一区二区天天拍小说| 91精品国产福利在线观看| 欧美不卡激情三级在线观看| 中文字幕在线观看一区| 三级影片在线观看欧美日韩一区二区| 久久99热99| 色综合久久综合网欧美综合网| 欧美精品xxxxbbbb| 久久精品人人做人人爽人人| 亚洲精品国产高清久久伦理二区| 石原莉奈在线亚洲三区| 成人综合婷婷国产精品久久蜜臀| 欧美日韩在线三区| 久久久精品免费免费| 亚洲妇熟xx妇色黄| 国产美女一区二区| 欧美性极品少妇| 2023国产精品视频| 亚洲国产精品一区二区www | 亚洲va韩国va欧美va| 欧美激情综合五月色丁香| 美日韩黄色大片| 成人国产精品免费观看动漫| 欧洲国内综合视频| 久久奇米777| 一区二区三区四区乱视频| 麻豆91在线看| 欧美日韩专区在线| 国产日韩高清在线| 日日夜夜精品视频免费| 99久久伊人网影院| 欧美不卡在线视频| 亚洲大尺度视频在线观看| 国产麻豆成人精品| 555www色欧美视频| 亚洲综合色成人| 国产激情精品久久久第一区二区| 91精品免费观看| 亚洲自拍偷拍九九九| 成人激情午夜影院| 国产欧美日韩精品一区| 九色porny丨国产精品| 欧美日韩国产美女| 亚洲精品国产无天堂网2021 | 一区二区三区鲁丝不卡| 国产99精品在线观看| 精品欧美一区二区久久| 欧美自拍丝袜亚洲| 国产在线精品一区在线观看麻豆| 一本久久综合亚洲鲁鲁五月天 | 麻豆精品视频在线观看视频| 欧美性大战久久久久久久蜜臀| 最新成人av在线| 成人h精品动漫一区二区三区| 亚洲精品一区二区三区精华液 | 日韩一区二区免费在线观看| 亚洲一区二区三区精品在线| 色婷婷综合久久久中文字幕| 国产精品蜜臀在线观看| 国产91精品久久久久久久网曝门 | 成人深夜福利app| 中文字幕欧美激情| caoporen国产精品视频| 国产精品视频观看| av在线综合网| 亚洲欧美日韩国产另类专区| 99久久免费精品| 亚洲欧洲制服丝袜| 欧美亚洲日本一区| 亚洲成人免费影院| 欧美日韩视频在线第一区 | 亚洲视频免费观看| 色乱码一区二区三区88| 亚洲在线中文字幕| 91精品国产乱| 国产精品99久久久久久似苏梦涵| 国产精品婷婷午夜在线观看| 91美女在线视频| 亚洲国产中文字幕在线视频综合| 欧美日韩三级视频| 精品一区二区三区免费视频| 亚洲国产激情av| 欧美日韩在线播放三区四区| 视频一区二区欧美| 国产偷国产偷亚洲高清人白洁| 成人午夜伦理影院| 亚洲综合色丁香婷婷六月图片| 欧美一区二区三区成人| 成人自拍视频在线观看| 亚洲一区二区三区四区的 | 国产成a人亚洲| 亚洲综合偷拍欧美一区色| 日韩欧美的一区| 91老师国产黑色丝袜在线| 午夜视频在线观看一区二区三区| 精品国产在天天线2019|