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

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

?? pages.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
字號:
/*
 * PAGES.CPP
 * Patron Chapter 1
 *
 * Implementation of the CPages class.  See PAGEWIN.CPP and PRINT.CPP
 * for additional member functions.
 *
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
 *
 * Kraig Brockschmidt, Microsoft
 * Internet  :  kraigb@microsoft.com
 * Compuserve:  >INTERNET:kraigb@microsoft.com
 */


#include "patron.h"


/*
 * CPages:CPages
 * CPages::~CPages
 *
 * Constructor Parameters:
 *  hInst           HINSTANCE of the application we're in.
 */

CPages::CPages(HINSTANCE hInst)
    : CWindow(hInst)
    {
    m_iPageCur=NOVALUE;  //Pages are 0 indexed, this is one before
    m_cPages=0;
    m_hWndPageList=NULL;
    m_hFont=NULL;
    m_fSystemFont=FALSE;

    //Initialize to 8.5*11 inch with .25 inch margins as a default.
    m_cx=(LOMETRIC_PER_INCH*17)/2;
    m_cy=LOMETRIC_PER_INCH*11;

    m_xMarginLeft=LOMETRIC_PER_INCH/4;
    m_xMarginRight=LOMETRIC_PER_INCH/4;
    m_yMarginTop=LOMETRIC_PER_INCH/4;
    m_yMarginBottom=LOMETRIC_PER_INCH/4;

    m_xPos=0L;
    m_yPos=0L;

    m_dwIDNext=0;
    m_hDevMode=NULL;
    return;
    }


CPages::~CPages(void)
    {
    //Ensure memory is cleaned up in the list
    New();

    if (NULL!=m_hFont && !m_fSystemFont)
        DeleteObject(m_hFont);

    if (NULL!=m_hWndPageList)
        DestroyWindow(m_hWndPageList);

    return;
    }





/*
 * CPages::Init
 *
 * Purpose:
 *  Instantiates a pages window within a given parent.  The
 *  parent may be a main application window, could be an MDI child
 *  window. We really do not care.
 *
 * Parameters:
 *  hWndParent      HWND of the parent of this window
 *  pRect           LPRECT that this window should occupy
 *  dwStyle         DWORD containing the window's style flags.
 *                  Should contain WS_CHILD | WS_VISIBLE in
 *                  typical circumstances.
 *  uID             UINT ID to associate with this window
 *  pv              LPVOID unused for now.
 *
 * Return Value:
 *  BOOL            TRUE if the function succeeded, FALSE otherwise.
 */

BOOL CPages::Init(HWND hWndParent, LPRECT pRect, DWORD dwStyle
    , UINT uID, LPVOID pv)
    {
    int     cy;

    m_hWnd=CreateWindowEx(WS_EX_NOPARENTNOTIFY, SZCLASSPAGES
        , SZCLASSPAGES, dwStyle, pRect->left, pRect->top
        , pRect->right-pRect->left, pRect->bottom-pRect->top
        , hWndParent, (HMENU)uID, m_hInst, this);

    if (NULL==m_hWnd)
        return FALSE;

    /*
     * Create the hidden listbox we'll use to track pages.  We give
     * it the owner-draw style so we can just store pointers in it.
     */
    m_hWndPageList=CreateWindow(TEXT("listbox"), TEXT("Page List")
        , WS_POPUP | LBS_OWNERDRAWFIXED, 0, 0, 100, 100
        , HWND_DESKTOP, NULL, m_hInst, NULL);

    if (NULL==m_hWndPageList)
        return FALSE;

    //Create a 14 point Arial font, or use the system variable font.
    cy=MulDiv(-14, LOMETRIC_PER_INCH, 72);
    m_hFont=CreateFont(cy, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE
        , ANSI_CHARSET, OUT_TT_PRECIS, CLIP_TT_ALWAYS, PROOF_QUALITY
        , VARIABLE_PITCH | FF_SWISS, TEXT("Arial"));

    if (NULL==m_hFont)
        {
        m_hFont=(HFONT)GetStockObject(ANSI_VAR_FONT);
        m_fSystemFont=TRUE;
        }

    return TRUE;
    }




/*
 * CPages::New
 *
 * Purpose:
 *  Cleans out and reinitializes the data to defaults.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  None
 */

void CPages::New(void)
    {
    PCPage      pPage;
    UINT        i;

    //First walk the page list and clean out the allocations.
    for (i=0; i < m_cPages; i++)
        {
        if (PageGet(i, &pPage, FALSE))
            delete pPage;
        }

    if (NULL!=m_hWndPageList)
        SendMessage(m_hWndPageList, LB_RESETCONTENT, 0, 0L);

    if (NULL!=m_hDevMode)
        GlobalFree(m_hDevMode);

    return;
    }








/*
 * CPages::RectGet
 *
 * Purpose:
 *  Returns the rectangle of the Pages window in parent coordinates.
 *
 * Parameters:
 *  pRect           LPRECT in which to return the rectangle.
 *
 * Return Value:
 *  None
 */

void CPages::RectGet(LPRECT pRect)
    {
    RECT        rc;
    POINT       pt;

    //Retrieve the size of our rectangle in parent coordinates.
    GetWindowRect(m_hWnd, &rc);
    pt.x=rc.left;
    pt.y=rc.top;
    ScreenToClient(GetParent(m_hWnd), &pt);

    SetRect(pRect, pt.x, pt.y, pt.x+(rc.right-rc.left)
        , pt.y+(rc.bottom-rc.top));

    return;
    }






/*
 * CPages::RectSet
 *
 * Purpose:
 *  Sets a new rectangle for the Pages window which sizes to fit.
 *  Coordinates are given in parent terms.
 *
 * Parameters:
 *  pRect           LPRECT containing the new rectangle.
 *  fNotify         BOOL indicating if we're to notify anyone of
 *                  the change.
 *
 * Return Value:
 *  None
 */

void CPages::RectSet(LPRECT pRect, BOOL fNotify)
    {
    UINT        cx, cy;

    if (NULL==pRect)
        return;

    cx=pRect->right-pRect->left;
    cy=pRect->bottom-pRect->top;

    SetWindowPos(m_hWnd, NULL, pRect->left, pRect->top
        , (UINT)cx, (UINT)cy, SWP_NOZORDER);

    UpdateScrollRanges();
    return;
    }




/*
 * CPages::SizeGet
 *
 * Purpose:
 *  Retrieves the size of the pages window in parent coordinates.
 *
 * Parameters:
 *  pRect           LPRECT in which to return the size.  The right
 *                  and bottom fields will contain the dimensions.
 *
 * Return Value:
 *  None
 */

void CPages::SizeGet(LPRECT pRect)
    {
    RectGet(pRect);
    return;
    }







/*
 * CPages::SizeSet
 *
 * Purpose:
 *  Sets a new size in parent coordinates for the Pages window.
 *
 * Parameters:
 *  pRect           LPRECT containing the new rectangle.
 *  fNotify         BOOL indicating if we're to notify anyone of
 *                  the change.
 *
 * Return Value:
 *  None
 */

void CPages::SizeSet(LPRECT pRect, BOOL fNotify)
    {
    UINT        cx, cy;

    if (NULL==pRect)
        return;

    cx=pRect->right-pRect->left;
    cy=pRect->bottom-pRect->top;

    SetWindowPos(m_hWnd, NULL, 0, 0, (UINT)cx, (UINT)cy
        , SWP_NOMOVE | SWP_NOZORDER);

    UpdateScrollRanges();
    return;
    }






/*
 * CPages::ActivePage
 *
 * Purpose:
 *  Returns a CPage pointer to the current page.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  PCPage          Pointer to the current page.
 */

PCPage CPages::ActivePage(void)
    {
    PCPage      pPage;
    BOOL        fRet;

    fRet=PageGet(m_iPageCur, &pPage, FALSE);
    return fRet ? pPage : NULL;
    }





/*
 * CPages::PageInsert
 *
 * Purpose:
 *  Creates a new page immediately after the current page.  If
 *  there are no pages then this creates page 1.
 *
 * Parameters:
 *  uReserved       UINT unused
 *
 * Return Value:
 *  UINT            Index of the new page, 0 on failure.
 */

UINT CPages::PageInsert(UINT uReserved)
    {
    //Create and open the new page.
    if (!PageAdd(m_iPageCur, m_dwIDNext, TRUE))
        return 0;

    m_dwIDNext++;
    m_iPageCur++;
    m_cPages++;

    InvalidateRect(m_hWnd, NULL, FALSE);
    UpdateWindow(m_hWnd);
    return m_iPageCur;
    }







/*
 * CPages::PageDelete
 *
 * Removes the current page from the page list.
 *
 * Parameters:
 *  uReserved       UINT unused
 *
 * Return Value:
 *  UINT            Index to the now current page from the page
 *                  list, NOVALUE on error.
 */

UINT CPages::PageDelete(UINT uReserved)
    {
    PCPage      pPage;

    if (!PageGet(m_iPageCur, &pPage, FALSE))
        return NOVALUE;

    //Delete the page in both the listbox and in memory.
    SendMessage(m_hWndPageList, LB_DELETESTRING, m_iPageCur, 0L);
    delete pPage;


    /*
     * If this is the last page then the current is one less.  If
     * it's the only page the current is zero.  Otherwise the
     * current is the next page.
     */

    if (m_iPageCur==m_cPages-1)   //Covers last or only page.
        m_iPageCur--;

    m_cPages--;

    if (0!=m_cPages)
        InvalidateRect(m_hWnd, NULL, FALSE);
    else
        InvalidateRect(m_hWnd, NULL, TRUE);

    UpdateWindow(m_hWnd);
    return m_iPageCur;
    }






/*
 * CPages::CurPageGet
 *
 * Purpose:
 *  Retrieves the index of the current page we're viewing.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  UINT            Index of the current page.
 */

UINT CPages::CurPageGet(void)
    {
    return m_iPageCur;
    }





/*
 * CPages::CurPageSet
 *
 * Purpose:
 *  Sets the index of the current page to view.
 *
 * Parameters:
 *  iPage           UINT index of the page to view. 0 means first
 *                  page, NOVALUE means last page.
 *
 * Return Value:
 *  UINT            Index of the previous current page, NOVALUE on
 *                  error.
 */

UINT CPages::CurPageSet(UINT iPage)
    {
    UINT    iPageNew;
    UINT    iPagePrev=m_iPageCur;

    switch (iPage)
        {
        case 0:
            iPageNew=0;
            break;

        case NOVALUE:
            iPageNew=m_cPages-1;
            break;

        default:
            if (iPage >= m_cPages)
                iPage=0;

            iPageNew=iPage;
            break;
        }

    //No reason to switch to the same page.
    if (iPagePrev==iPageNew)
        return iPage;

    m_iPageCur=iPageNew;

    InvalidateRect(m_hWnd, NULL, FALSE);
    UpdateWindow(m_hWnd);
    return iPagePrev;
    }



/*
 * CPages::NumPagesGet
 *
 * Purpose:
 *  Returns the number of pages this object current contains.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  UINT            Number of pages we contain.
 */

UINT CPages::NumPagesGet(void)
    {
    return m_cPages;
    }





/*
 * CPages::PageGet
 * (Protected)
 *
 * Purpose:
 *  Returns a page of a given index returning a BOOL so it's simple
 *  to use this function inside if statements.
 *
 * Parameters:
 *  iPage           UINT page to retrieve.
 *  ppPage          PCPage * in which to return the page
 *                  pointer
 *  fReserved       BOOL reserved for future use.
 *
 * Return Value:
 *  BOOL            TRUE if successful, FALSE otherwise.
 */

BOOL CPages::PageGet(UINT iPage, PCPage *ppPage
    , BOOL fReserved)
    {
    if (NULL==ppPage)
        return FALSE;

    if (LB_ERR!=SendMessage(m_hWndPageList, LB_GETTEXT
        , iPage, (LONG)ppPage))
        return TRUE;

    return FALSE;
    }





/*
 * CPages::PageAdd
 * (Protected)
 *
 * Purpose:
 *  Creates a new page initialized to the given values.
 *
 * Parameters:
 *  iPage           UINT Location at which to insert page; new page
 *                  is inserted after this position.  NOVALUE for
 *                  the end.
 *  cObjects        UINT number of objects on this page.
 *  dwID            DWORD ID for this page.
 *  fReserved       BOOL reserved for future use.
 *
 * Return Value:
 *  BOOL            TRUE if the function succeeded, FALSE otherwise.
 */

BOOL CPages::PageAdd(UINT iPage, DWORD dwID, BOOL fReserved)
    {
    PCPage      pPage;
    LRESULT     lr;

    pPage=new CPage(dwID);

    if (NULL==pPage)
        return FALSE;

    if (NOVALUE==iPage)
        iPage--;

    //Now try to add to the listbox.
    lr=SendMessage(m_hWndPageList, LB_INSERTSTRING, iPage+1
        , (LONG)pPage);

    if (LB_ERRSPACE==lr)
        {
        delete pPage;
        return FALSE;
        }

    return TRUE;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
秋霞午夜av一区二区三区| www.欧美精品一二区| 国产精品99久久久| 91香蕉视频mp4| 欧美精品九九99久久| 精品久久久久久亚洲综合网 | 成人性生交大片免费看在线播放| av日韩在线网站| 欧美一区二区三区白人| 国产精品理伦片| 日本视频一区二区三区| 成人免费的视频| 欧美日韩第一区日日骚| 国产精品短视频| 久久国产精品露脸对白| 欧美性大战xxxxx久久久| 国产精品沙发午睡系列990531| 日韩av成人高清| 91网站黄www| 国产午夜精品久久久久久久| 免费人成黄页网站在线一区二区| 99re8在线精品视频免费播放| 欧美mv和日韩mv的网站| 青青草成人在线观看| 欧美日韩国产免费一区二区| 中文字幕一区免费在线观看| 狠狠久久亚洲欧美| 日韩欧美视频一区| 色欧美日韩亚洲| 国产精品久久二区二区| 成人毛片老司机大片| 国产偷v国产偷v亚洲高清| 麻豆91在线观看| 日韩免费观看高清完整版在线观看| 午夜精品成人在线| 在线成人免费视频| 日韩精品高清不卡| 日韩三级中文字幕| 美女免费视频一区| 欧美成人艳星乳罩| 久久国产精品露脸对白| 日韩免费视频一区| 韩国欧美一区二区| 一区视频在线播放| 欧美男女性生活在线直播观看| 亚洲国产精品久久艾草纯爱| 欧美群妇大交群中文字幕| 日韩二区三区四区| 欧美大片一区二区| 欧美亚洲动漫另类| 亚洲免费观看高清完整| 91精品蜜臀在线一区尤物| 久久国产视频网| 欧美国产日韩a欧美在线观看| 9久草视频在线视频精品| 亚洲图片有声小说| 久久久久青草大香线综合精品| 成人av动漫网站| 日本视频中文字幕一区二区三区| 日韩欧美国产wwwww| 99精品国产99久久久久久白柏| 亚洲综合色区另类av| 精品成人免费观看| 91行情网站电视在线观看高清版| 午夜激情一区二区| 中文字幕一区二区三区av| 欧美日韩国产综合久久| 韩国理伦片一区二区三区在线播放| 亚洲色大成网站www久久九九| 欧美精品v国产精品v日韩精品 | 久久综合久久鬼色| 不卡视频一二三| 精彩视频一区二区| 亚洲国产成人porn| 亚洲免费观看高清在线观看| 精品成人在线观看| 91精品久久久久久久91蜜桃| 色乱码一区二区三区88| 丁香网亚洲国际| 久久99精品久久久久婷婷| 亚洲第一主播视频| 亚洲激情欧美激情| 亚洲美女偷拍久久| 依依成人精品视频| 亚洲欧洲综合另类在线| 国产精品日日摸夜夜摸av| 久久综合久久鬼色中文字| 日韩一二三区视频| 日韩欧美久久久| 欧美一区二区三区在线观看| 欧美久久久久久蜜桃| 在线日韩一区二区| 日本丰满少妇一区二区三区| 色婷婷综合久久久久中文| youjizz国产精品| av一区二区三区| 国产不卡免费视频| av在线这里只有精品| 成人app软件下载大全免费| 91丨九色porny丨蝌蚪| 99视频精品免费视频| 欧美系列一区二区| 欧美一区二区三区白人| 久久中文字幕电影| 久久男人中文字幕资源站| 国产精品久久久久久福利一牛影视 | 国产三级久久久| 日韩理论片在线| 亚洲v精品v日韩v欧美v专区| 七七婷婷婷婷精品国产| 成人国产精品免费观看视频| 91小视频免费观看| 日韩一二三区不卡| 亚洲天堂免费在线观看视频| 午夜精品久久久久久不卡8050| 久久爱www久久做| 在线观看欧美日本| 日韩一二在线观看| 伊人开心综合网| 久久成人18免费观看| 91精品办公室少妇高潮对白| 日韩精品一区二区三区在线播放| 中文字幕一区二区三区不卡在线 | 精品美女一区二区| 亚洲精品美腿丝袜| 国产盗摄视频一区二区三区| 91麻豆精品国产91久久久| 中文字幕亚洲电影| 激情文学综合丁香| 欧美日韩国产bt| 亚洲一区二区3| 国产成人av影院| 欧美大片在线观看一区二区| 亚洲综合清纯丝袜自拍| 国产最新精品精品你懂的| 91久久香蕉国产日韩欧美9色| 国产亚洲一区字幕| 韩国一区二区在线观看| 亚洲精品在线网站| 精品综合久久久久久8888| 欧美精品国产精品| 洋洋成人永久网站入口| 日本高清不卡视频| 一区二区三国产精华液| 色妞www精品视频| 亚洲特黄一级片| 91免费观看视频| 亚洲人成人一区二区在线观看| 91丨九色丨尤物| 一个色妞综合视频在线观看| 色伊人久久综合中文字幕| 亚洲视频狠狠干| 91国偷自产一区二区使用方法| 一区二区三区视频在线看| 欧美日韩精品专区| 奇米影视在线99精品| 精品欧美一区二区三区精品久久 | 日韩欧美综合在线| 极品美女销魂一区二区三区| 欧美精品一区二区三区在线播放| 国产精品一区二区x88av| 国产欧美日韩在线观看| 粗大黑人巨茎大战欧美成人| 亚洲精品高清视频在线观看| 欧美视频中文字幕| 裸体健美xxxx欧美裸体表演| 久久久久9999亚洲精品| av一二三不卡影片| 香蕉久久一区二区不卡无毒影院| 日韩一级二级三级| 99精品视频在线免费观看| 亚洲自拍偷拍麻豆| 亚洲精品一区二区三区影院 | 一区二区不卡在线播放 | 色琪琪一区二区三区亚洲区| 麻豆91在线播放| 亚洲精品日日夜夜| 精品裸体舞一区二区三区| 欧美亚洲综合在线| 国产不卡一区视频| 日韩二区在线观看| 国产精品国产三级国产三级人妇| 51精品视频一区二区三区| 99视频有精品| 国产精品一区不卡| 久久99日本精品| 亚洲一区二区三区四区不卡| 中文一区一区三区高中清不卡| 欧美一区二区免费视频| 欧美午夜不卡视频| 91色.com| 99精品视频在线播放观看| 国产精品一区二区在线观看不卡 | 97精品久久久午夜一区二区三区 | 日韩一区二区三区四区| 在线不卡免费av| 欧美亚洲一区二区在线| 日本精品视频一区二区| www.在线成人| 色综合久久66|