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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? gizmo.c

?? 英文版的 想要的話可以下載了 為大家服務(wù)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
                , 0, 0, SWP_NOZORDER | SWP_NOSIZE);
            }

        pGizmo=pGizmo->pNext;
        }

    return;
    }







/*
 * GizmosCompact
 *
 * Purpose:
 *  Given a gizmo, moves all other gizmos to the right of it to the
 *  left by its width on the GizmoBar.  Used when removing or hiding
 *  the gizmo.
 *
 * Parameters:
 *  pGizmo          PGIZMO that is going away, visibly or physically.
 *
 * Return Value:
 *  None
 */

void GizmosCompact(PGIZMO pGizmo)
    {
    UINT        cx;
    PGIZMO      pCur;

    //Move all the gizmos beyond us back by our width.
    if (NULL!=pGizmo->pNext)
        {
        cx=pGizmo->pNext->x - pGizmo->x;
        pCur=pGizmo->pNext;

        while (NULL!=pCur)
            {
            pCur->x-=cx;

            if (NULL!=pCur->hWnd)
                {
                SetWindowPos(pCur->hWnd, NULL, pCur->x, pCur->y
                             , 0, 0, SWP_NOZORDER | SWP_NOSIZE);
                }

            pCur=pCur->pNext;
            }
        }

    return;
    }






/*
 * GizmoPFind
 *
 * Purpose:
 *  Given a GIZMO identifier, locates and returns a pointer to the
 *  structure for that position.
 *
 * Parameters:
 *  ppFirst         PPGIZMO providing the first gizmo in this list.
 *  uID             UINT identifier to find.
 *
 * Return Value:
 *  PGIZMO          A pointer to a GIZMO structure allocated through
 *                  GizmoPAllocate, NULL if iGizmo is out of range.
 */

PGIZMO GizmoPFind(PPGIZMO ppFirst, UINT uID)
    {
    PGIZMO       pGizmo;

    pGizmo=*ppFirst;

    /*
     * Yep, linear search, but a better search algorithm won't
     * improve things appreciably.  The better thing to optimize
     * is what the caller passes as ppFirst.
     */
    while (NULL!=pGizmo && uID!=pGizmo->uID)
        pGizmo=pGizmo->pNext;

    return pGizmo;
    }






/*
 * GizmoFEnum
 *
 * Purpose:
 *  Enumerates the list of GIZMO structures, passing each one to
 *  an application-defined callback.
 *
 * Parameters:
 *  ppFirst         PPGIZMO providing the first gizmo in this list.
 *  pfnEnum         PFNGIZMOENUM to call for each enumerated
 *                  structure.
 *  dw              DWORD extra data to pass to the enumeration
 *                  function.
 *
 * Return Value:
 *  PGIZMO          NULL if the enumeration completed.  Otherwise a
 *                  pointer to the gizmo that enumeration stopped on.
 */

PGIZMO GizmoPEnum(PPGIZMO ppFirst, PFNGIZMOENUM pfnEnum, DWORD dw)
    {
    PGIZMO  pGizmo;
    UINT    i=0;

    pGizmo=*ppFirst;

    while (NULL!=pGizmo)
        {
        if (!(*pfnEnum)(pGizmo, i++, dw))
            break;

        pGizmo=pGizmo->pNext;
        }

    return pGizmo;
    }




/*
 * GizmoPStateSet
 *
 * Purpose:
 *  State maniuplation functions.  Set and Clear also invalidate
 *  this gizmo's rectangle on the given window and forces a repaint.
 *
 * Parameters:
 *  hWnd            HWND of the window to repaint.
 *  pGizmo          PGIZMO affected.
 *  dwNew           DWORD new state flags.
 *
 * Return Value:
 *  UINT            Previous state.
 */

UINT  GizmoPStateSet(HWND hWnd, PGIZMO pGizmo, UINT uNew)
    {
    UINT        uRet;
    RECT        rc;

    if (GIZMOTYPE_SEPARATOR==pGizmo->iType)
        return pGizmo->uState;

    //Preserve the color conversion flags across this state change.
    uRet=pGizmo->uState;
    pGizmo->uState=(uNew & 0x00FF) | (uRet & 0xFF00);

    //Adjust the rectangle by  one to avoid repainting  borders.
    SetRect(&rc, pGizmo->x+1, pGizmo->y+1, pGizmo->x+pGizmo->dx-1
        , pGizmo->y+pGizmo->dy-1);
    InvalidateRect(hWnd, &rc, FALSE);
    UpdateWindow(hWnd);

    return uRet;
    }








/*
 * GizmoPCheck
 *
 * Purpose:
 *  Handles checking a single button in a group of attribute buttons.
 *  If the gizmo belongs to a group of mutually exclusive buttons
 *  then the others surrounding it are unchecked appropriately.
 *
 * Parameters:
 *  hWnd            HWND of the GizmoBar.
 *  pGizmo          PGIZMO of the gizmo affected.
 *  fCheck          BOOL TRUE to check the button, FALSE to uncheck.
 *
 * Return Value:
 *  BOOL            TRUE if the gizmo was previously checked, FALSE
 *                  otherwise.
 */

BOOL GizmoPCheck(HWND hWnd, PGIZMO pGizmo, BOOL fCheck)
    {
    BOOL        fPrevCheck;
    PGIZMO      pCur;


    //Ignore command buttons.
    if (GIZMOTYPE_BUTTONCOMMAND==pGizmo->iType)
        return FALSE;

    //Get the previous state
    fPrevCheck=(BOOL)(BUTTONGROUP_DOWN & pGizmo->uState);


    //Simply set the state for inclusive attribute buttons.
    if (GIZMOTYPE_BUTTONATTRIBUTEIN==pGizmo->iType)
        {
        if (pGizmo->fDisabled)
            {
            GizmoPStateSet(hWnd, pGizmo
                , fCheck ? ATTRIBUTEBUTTON_DOWNDISABLED
                : ATTRIBUTEBUTTON_DISABLED);
            }
        else
            {
            GizmoPStateSet(hWnd, pGizmo, fCheck
                ? ATTRIBUTEBUTTON_DOWN : ATTRIBUTEBUTTON_UP);
            }
        }


    if (GIZMOTYPE_BUTTONATTRIBUTEEX==pGizmo->iType)
        {
        //We cannot uncheck an exclusive attribute
        if (!fCheck)
            return fPrevCheck;

        /*
         * For exclusive buttons we have to do more work.  First, if
         * we're already checked (incliding DOWN and MOUSEDOWN) then
         * we set DOWN and exit.  If we're not already checked, then
         * we look for the gizmo around us, backwards and forwards,
         * that is checked and uncheck him.
         */

        //Search  backwards.
        pCur=pGizmo->pPrev;

        while (NULL!=pCur)
            {
            //Stop at any non-exclusive attribute.
            if (GIZMOTYPE_BUTTONATTRIBUTEEX!=pCur->iType)
                {
                pCur=NULL;
                break;
                }

            //If it's down, set it up and we've finished.
            if (BUTTONGROUP_DOWN & pCur->uState)
                break;

            pCur=pCur->pPrev;
            }


        //If we didn't find a previous one, pCur is NULL, look ahead.
        if (NULL==pCur)
            {
            pCur=pGizmo->pNext;

            while (NULL!=pCur)
                {
                //Stop at any non-exclusive attribute.
                if (GIZMOTYPE_BUTTONATTRIBUTEEX!=pCur->iType)
                    {
                    pCur=NULL;
                    break;
                    }

                //If it's down, set it up and we've finished.
                if (BUTTONGROUP_DOWN & pCur->uState)
                    break;

                pCur=pCur->pNext;
                }
            }

        //If pCur is non-NULL, we found a neighbor, so uncheck it
        if (NULL!=pCur)
            {
            GizmoPStateSet(hWnd, pCur, (pGizmo->fDisabled)
                ? ATTRIBUTEBUTTON_DISABLED : ATTRIBUTEBUTTON_UP);
            }

        //Always set ourselves down
        GizmoPStateSet(hWnd, pGizmo, (pGizmo->fDisabled)
            ? ATTRIBUTEBUTTON_DOWNDISABLED : ATTRIBUTEBUTTON_DOWN);
        }

    return fPrevCheck;
    }







/*
 * GenericSubProc
 *
 * Purpose:
 *  Subclasses window controls in Gizmos so we can trap the tab key
 *  and tab to the next control.  We can have one shared generic
 *  subclass procedure because we save the type index for this
 *  control in the property "iType."  This allows us to look up the
 *  original procedure in the pfnOrg array.
 *
 * Parameters:
 *  Standard
 *
 * Return Value:
 *  Standard
 */

LRESULT APIENTRY GenericSubProc(HWND hWnd, UINT iMsg
    , WPARAM wParam, LPARAM lParam)
    {
    LONG        lRet;
    RECT        rc;
    RECT        rcE;
    HWND        hWndE;
    HBRUSH      hBr;
    HDC         hDC;
    UINT        dx;
    UINT        iType, i;

    i=(int)GetProp(hWnd, SZTYPEPROP);
    iType=POSITIONBIT(i);

    //Special:  paint the gap in drop-down comboboxes.
    if (GIZMOTYPE_COMBOBOX==iType && WM_PAINT==iMsg)
        {
        //Do default painting.
        lRet=(*pfnOrg[i])(hWnd, iMsg, wParam, lParam);

        hWndE=GetDlgItem(hWnd, ID_COMBOEDIT);

        GetClientRect(hWnd, &rc);
        GetClientRect(hWndE, &rcE);

        //The width of the button is the scroll bar width.
        dx=GetSystemMetrics(SM_CXVSCROLL);

        //Calculate the rectangle
        rc.right -=dx;
        rc.left   =rcE.right;
        rc.bottom+=1;

        //Paint the gap
        hDC=GetDC(hWnd);   //Already did BeginPaint and EndPaint

        hBr=CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
        FillRect(hDC, &rc, hBr);
        DeleteObject(hBr);

        ReleaseDC(hWnd, hDC);
        return lRet;
        }

    //Control tabbing to the next or previous control
    if (WM_KEYDOWN==iMsg && VK_TAB==wParam)
        {
        hWndE=hWnd;

        if (-1==i)
            hWndE=GetParent(hWnd);

        hWndE=GetNextDlgTabItem(GetParent(hWndE), hWnd
            , (BOOL)(GetKeyState(VK_SHIFT)));
        SetFocus(hWndE);
        return 0L;
        }

    if (-1==i) i=0;

    //Eat tab chars in edit controls to prevent beeping.
    if (0==i && WM_CHAR==iMsg && VK_TAB==wParam)
        return 0L;


    //Do this or edit controls bomb big-time.
    return CallWindowProc(pfnOrg[i], hWnd, iMsg, wParam, lParam);
    }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产色综合久久不卡蜜臀| 欧美日韩在线播放一区| 亚洲视频一区在线观看| 欧美一级精品在线| 国产成人一区在线| 一区二区久久久| 国产丝袜美腿一区二区三区| 99久久国产免费看| 免费高清成人在线| 亚洲电影一区二区三区| 久久久精品免费网站| 91精品福利视频| 国产xxx精品视频大全| 亚洲不卡av一区二区三区| 久久嫩草精品久久久精品一| 91精品国产综合久久精品性色| 国产成人免费av在线| 午夜精品一区在线观看| 日韩一区二区麻豆国产| 欧美日韩免费视频| 波多野结衣的一区二区三区| 日本不卡高清视频| 亚洲6080在线| 国产精品三级视频| 日韩免费看的电影| 欧美精品乱人伦久久久久久| 99免费精品视频| 国产最新精品免费| 精品在线播放午夜| 亚洲成av人片一区二区| 亚洲欧美综合另类在线卡通| 精品国产免费一区二区三区香蕉| 日韩一区二区视频在线观看| 91久久精品一区二区二区| 国产精品一区二区无线| 国产美女久久久久| 日本成人中文字幕在线视频| 一区二区三区四区在线免费观看| 欧美大片国产精品| 91.麻豆视频| 欧美午夜精品免费| 9i在线看片成人免费| 东方aⅴ免费观看久久av| 久久精品国产秦先生| 精品在线观看视频| 久草中文综合在线| 日本不卡1234视频| 日韩精品每日更新| 亚洲天堂精品视频| 综合av第一页| 中文一区二区在线观看| 欧美国产欧美综合| 久久久久高清精品| 国产精品视频第一区| 欧美激情一区二区三区不卡 | 国产成人日日夜夜| 成人禁用看黄a在线| 国产91富婆露脸刺激对白| 国产又黄又大久久| 成人精品在线视频观看| 风间由美中文字幕在线看视频国产欧美| 六月丁香综合在线视频| 日韩av电影免费观看高清完整版在线观看| 亚洲精品欧美二区三区中文字幕| 国产精品久久久久久久第一福利| 久久久国产综合精品女国产盗摄| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美一区二区三区免费视频| 678五月天丁香亚洲综合网| 6080yy午夜一二三区久久| 555www色欧美视频| 欧美一区二区久久| 欧美精品一区二区三区蜜桃| 国产精品久久久爽爽爽麻豆色哟哟| 中文字幕一区在线观看视频| 国产精品卡一卡二| 午夜精品久久久久久久久久久| 婷婷久久综合九色综合绿巨人 | 欧美色图第一页| 在线播放国产精品二区一二区四区| 精品国产sm最大网站| 久久精品一区二区| 亚洲天堂免费在线观看视频| 日韩影视精彩在线| 久久99久久久久久久久久久| 韩国在线一区二区| 在线视频国内一区二区| 日韩一区二区在线观看视频播放| 欧美日韩精品一区二区三区四区 | 成人一区在线观看| 91美女精品福利| 欧美卡1卡2卡| 国产视频911| 一级做a爱片久久| 极品美女销魂一区二区三区| 高清久久久久久| 欧美综合在线视频| 中文字幕不卡一区| 日日夜夜精品免费视频| 国内外成人在线| 欧美色涩在线第一页| 久久免费的精品国产v∧| 亚洲天堂精品视频| 国产99久久久久| 欧美日韩国产综合久久| 国产三级欧美三级| 久久99精品久久久久久动态图| 成人av网在线| 6080亚洲精品一区二区| 亚洲自拍偷拍图区| 国产乱对白刺激视频不卡| 波多野结衣中文字幕一区二区三区 | 欧美日韩亚洲高清一区二区| 日韩精品一区二区三区swag| 亚洲一区二区三区国产| 国产一区二区三区日韩| eeuss鲁片一区二区三区在线观看| 日韩欧美123| 亚洲一区二区三区四区的| 国产在线精品不卡| 欧美变态凌虐bdsm| 亚洲一区二三区| 国产一区二区毛片| 日韩一级精品视频在线观看| 亚洲丝袜美腿综合| 看电视剧不卡顿的网站| 在线观看91av| 亚洲免费在线看| av电影在线观看不卡| 国产亚洲综合在线| 理论电影国产精品| 日韩三级视频中文字幕| 亚洲香蕉伊在人在线观| www.在线成人| 国产精品久久久久影院亚瑟| 国产一区在线观看视频| 欧美日韩小视频| 丝袜a∨在线一区二区三区不卡| 96av麻豆蜜桃一区二区| 国产婷婷色一区二区三区在线| 国内精品伊人久久久久影院对白| 欧美另类久久久品| 亚洲国产成人va在线观看天堂| 欧美日韩精品一区二区三区蜜桃 | 久久精品无码一区二区三区| 丝袜美腿亚洲一区| 欧美日韩国产美女| 亚洲福利一区二区| 成人激情综合网站| 亚洲国产成人在线| 懂色av一区二区三区免费观看 | 五月激情丁香一区二区三区| 色婷婷综合久久久久中文 | 日韩欧美国产一二三区| 极品少妇xxxx精品少妇| 欧美v日韩v国产v| 毛片av一区二区三区| 久久精品日韩一区二区三区| 国产成人免费视频一区| 久久久久九九视频| caoporn国产精品| 亚洲精品美腿丝袜| 欧美日韩精品欧美日韩精品一 | 亚洲综合精品自拍| 欧美日韩久久久一区| 激情六月婷婷久久| 久久精品视频在线免费观看 | 日本久久一区二区| 亚洲成人动漫av| 制服丝袜一区二区三区| 国产在线播放一区| 国产精品国产三级国产aⅴ入口 | 99国产精品99久久久久久| 亚洲黄色在线视频| 91精品国产综合久久精品性色| 蜜桃视频免费观看一区| 中文字幕av一区二区三区高| 91国产成人在线| 蜜臀av性久久久久蜜臀av麻豆| 中文在线一区二区| 在线观看精品一区| 午夜一区二区三区视频| 国产亚洲欧美色| 91欧美激情一区二区三区成人| 中文字幕亚洲电影| 6080亚洲精品一区二区| 国产一区二区三区日韩| 国产精品久久久久久久久免费相片| 91亚洲男人天堂| 日韩精品免费专区| 亚洲欧美日韩人成在线播放| 欧美日韩第一区日日骚| 国产一区不卡精品| 亚洲综合久久久久| 久久亚洲免费视频| 欧美日韩一区中文字幕| 国产成人免费视频一区| 麻豆精品视频在线| 亚洲电影一级黄| 亚洲日韩欧美一区二区在线|