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

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

?? radiobutton.c

?? STM32+Grlib
?? C
?? 第 1 頁 / 共 2 頁
字號:
    //
    // Check the arguments.
    //
    ASSERT(pWidget);

    //
    // Convert the generic widget pointer into a radio button widget pointer.
    //
    pRadio = (tRadioButtonWidget *)pWidget;

    //
    // See if the given coordinates are within the extents of the radio button.
    //
    if((lX >= pWidget->sPosition.sXMin) &&
       (lX <= pWidget->sPosition.sXMax) &&
       (lY >= pWidget->sPosition.sYMin) &&
       (lY <= pWidget->sPosition.sYMax))
    {
        //
        // See if the pointer was just raised and this radio button is not
        // selected.
        //
        if((ulMsg == WIDGET_MSG_PTR_UP) &&
           !(pRadio->usStyle & RB_STYLE_SELECTED))
        {
            //
            // Loop through the sibblings of this radio button widget.
            //
            for(pSibling = pWidget->pParent->pChild; pSibling;
                pSibling = pSibling->pNext)
            {
                //
                // Skip this widget if it is not a radio button widget, or if
                // it is the original radio button widget.
                //
                if((pSibling == pWidget) ||
                   (pSibling->pfnMsgProc != RadioButtonMsgProc))
                {
                    continue;
                }

                //
                // Convert the generic widget pointer into a radio button
                // widget pointer.
                //
                pRadio2 = (tRadioButtonWidget *)pSibling;

                //
                // See if the sibling radio button is selected.
                //
                if(pRadio2->usStyle & RB_STYLE_SELECTED)
                {
                    //
                    // Clear the selected state of the sibling radio button.
                    //
                    pRadio2->usStyle &= ~(RB_STYLE_SELECTED);

                    //
                    // Redraw the sibling radio button.
                    //
                    RadioButtonPaint(pSibling, 1);

                    //
                    // If there is an OnChange callback for the sibling radio
                    // button then call the callback.
                    //
                    if(pRadio2->pfnOnChange)
                    {
                        pRadio2->pfnOnChange(pSibling, 0);
                    }
                }
            }

            //
            // Set the selected state of this radio button.
            //
            pRadio->usStyle |= RB_STYLE_SELECTED;

            //
            // Redraw the radio button.
            //
            RadioButtonPaint(pWidget, 1);

            //
            // If there is an OnChange callback for this widget then call the
            // callback.
            //
            if(pRadio->pfnOnChange)
            {
                pRadio->pfnOnChange(pWidget, 1);
            }
        }

        //
        // These coordinates are within the extents of the radio button widget.
        //
        return(1);
    }

    //
    // These coordinates are not within the extents of the radio button widget.
    //
    return(0);
}

//*****************************************************************************
//
//! Handles messages for a radio button widget.
//!
//! \param pWidget is a pointer to the radio button widget.
//! \param ulMsg is the message.
//! \param ulParam1 is the first parameter to the message.
//! \param ulParam2 is the second parameter to the message.
//!
//! This function receives messages intended for this radio button widget and
//! processes them accordingly.  The processing of the message varies based on
//! the message in question.
//!
//! Unrecognized messages are handled by calling WidgetDefaultMsgProc().
//!
//! \return Returns a value appropriate to the supplied message.
//
//*****************************************************************************
long
RadioButtonMsgProc(tWidget *pWidget, unsigned long ulMsg,
                   unsigned long ulParam1, unsigned long ulParam2)
{
    //
    // Check the arguments.
    //
    ASSERT(pWidget);

    //
    // Determine which message is being sent.
    //
    switch(ulMsg)
    {
        //
        // The widget paint request has been sent.
        //
        case WIDGET_MSG_PAINT:
        {
            //
            // Handle the widget paint request.
            //
            RadioButtonPaint(pWidget, 0);

            //
            // Return one to indicate that the message was successfully
            // processed.
            //
            return(1);
        }

        //
        // One of the pointer requests has been sent.
        //
        case WIDGET_MSG_PTR_DOWN:
        case WIDGET_MSG_PTR_MOVE:
        case WIDGET_MSG_PTR_UP:
        {
            //
            // Handle the pointer request, returning the appropriate value.
            //
            return(RadioButtonClick(pWidget, ulMsg, ulParam1, ulParam2));
        }

        //
        // An unknown request has been sent.
        //
        default:
        {
            //
            // Let the default message handler process this message.
            //
            return(WidgetDefaultMsgProc(pWidget, ulMsg, ulParam1, ulParam2));
        }
    }
}

//*****************************************************************************
//
//! Initializes a radio button widget.
//!
//! \param pWidget is a pointer to the radio button widget to initialize.
//! \param pDisplay is a pointer to the display on which to draw the push
//! button.
//! \param lX is the X coordinate of the upper left corner of the radio button.
//! \param lY is the Y coordinate of the upper left corner of the radio button.
//! \param lWidth is the width of the radio button.
//! \param lHeight is the height of the radio button.
//!
//! This function initializes the provided radio button widget.
//!
//! \return None.
//
//*****************************************************************************
void
RadioButtonInit(tRadioButtonWidget *pWidget, const tDisplay *pDisplay, long lX,
                long lY, long lWidth, long lHeight)
{
    unsigned long ulIdx;

    //
    // Check the arguments.
    //
    ASSERT(pWidget);
    ASSERT(pDisplay);

    //
    // Clear out the widget structure.
    //
    for(ulIdx = 0; ulIdx < sizeof(tRadioButtonWidget); ulIdx += 4)
    {
        ((unsigned long *)pWidget)[ulIdx / 4] = 0;
    }

    //
    // Set the size of the radio button widget structure.
    //
    pWidget->sBase.lSize = sizeof(tRadioButtonWidget);

    //
    // Mark this widget as fully disconnected.
    //
    pWidget->sBase.pParent = 0;
    pWidget->sBase.pNext = 0;
    pWidget->sBase.pChild = 0;

    //
    // Save the display pointer.
    //
    pWidget->sBase.pDisplay = pDisplay;

    //
    // Set the extents of this radio button.
    //
    pWidget->sBase.sPosition.sXMin = lX;
    pWidget->sBase.sPosition.sYMin = lY;
    pWidget->sBase.sPosition.sXMax = lX + lWidth - 1;
    pWidget->sBase.sPosition.sYMax = lY + lHeight - 1;

    //
    // Use the radio button message handler to processage messages to this
    // radio button.
    //
    pWidget->sBase.pfnMsgProc = RadioButtonMsgProc;
}

//*****************************************************************************
//
// Close the Doxygen group.
//! @}
//
//*****************************************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人激情综合网| 精品国产成人系列| 中文字幕永久在线不卡| 久久99日本精品| 这里只有精品电影| 天天av天天翘天天综合网色鬼国产| yourporn久久国产精品| 国产精品无码永久免费888| 国产精品一级在线| 国产女人18水真多18精品一级做| 极品少妇一区二区三区精品视频| 欧美综合一区二区| 亚洲一区二三区| 欧美做爰猛烈大尺度电影无法无天| 一区视频在线播放| 欧美中文字幕一区二区三区| 一区二区三区在线观看动漫| 在线观看亚洲一区| 成人欧美一区二区三区| 91麻豆国产精品久久| 亚洲男同性视频| 色94色欧美sute亚洲线路一久| 亚洲视频狠狠干| 在线影视一区二区三区| 亚洲图片有声小说| 在线观看91av| 国产伦精品一区二区三区免费| 精品精品欲导航| 国产高清不卡二三区| 国产精品不卡视频| 在线观看一区日韩| 青青草国产成人99久久| 久久久久久久久久久久久女国产乱| 国产成人8x视频一区二区 | 欧美成人精精品一区二区频| 一区二区在线免费观看| 欧美日韩久久一区| 国内精品在线播放| 国产欧美日韩精品一区| 色哟哟精品一区| 蜜桃久久久久久久| 国产肉丝袜一区二区| 色哦色哦哦色天天综合| 五月婷婷久久丁香| 国产丝袜欧美中文另类| 欧洲生活片亚洲生活在线观看| 美女一区二区视频| 亚洲欧美一区二区不卡| 91精品国产综合久久久久久久| 国产精品亚洲专一区二区三区| **欧美大码日韩| 日韩亚洲欧美成人一区| 国产91在线看| 亚洲成av人影院在线观看网| 国产蜜臀97一区二区三区| 日韩一区二区免费高清| 欧美日韩国产综合久久| 91在线视频播放| 成人免费毛片高清视频| 国产伦精品一区二区三区免费迷| 日韩成人av影视| 亚洲国产成人高清精品| 亚洲男同性恋视频| 亚洲欧美色一区| 国产精品久久久久久久久搜平片| 亚洲精品在线三区| 欧美大胆一级视频| 欧美电视剧免费全集观看| 69久久99精品久久久久婷婷 | 91国偷自产一区二区开放时间 | 欧美aⅴ一区二区三区视频| 亚洲一区二区三区免费视频| 中文字幕亚洲一区二区va在线| ww久久中文字幕| 久久综合九色综合欧美亚洲| 亚洲精品在线观看网站| 欧美sm美女调教| 欧美变态tickle挠乳网站| 精品免费视频.| 欧美哺乳videos| 亚洲精品一区二区三区影院| 欧美精品一区二区三区很污很色的| 日韩视频中午一区| 欧美va日韩va| 欧美—级在线免费片| 国产精品萝li| 亚洲精品视频一区| 亚洲成人高清在线| 老司机精品视频线观看86| 看片的网站亚洲| 国产91在线观看| 91网站最新网址| 在线国产电影不卡| 欧美一区二区三区在线电影| 日韩欧美国产午夜精品| 2021国产精品久久精品| 欧美国产精品一区二区| 亚洲三级小视频| 亚洲成人黄色小说| 国产在线视视频有精品| eeuss影院一区二区三区 | 一区二区三区在线播放| 日日夜夜精品视频天天综合网| 理论电影国产精品| 成人性生交大片| 欧美视频一区二区三区在线观看| 在线播放国产精品二区一二区四区 | 国产丝袜美腿一区二区三区| 国产精品久99| 日日夜夜一区二区| 国产91在线观看| 欧美性色欧美a在线播放| 精品国产乱码久久久久久久| 中文字幕成人网| 婷婷亚洲久悠悠色悠在线播放| 韩国精品一区二区| 在线国产亚洲欧美| 久久综合久久综合久久综合| 亚洲国产一区二区三区青草影视| 久久成人羞羞网站| 在线免费观看一区| 26uuu欧美| 亚洲成a人片综合在线| 粉嫩绯色av一区二区在线观看| 日本高清不卡视频| 久久亚洲精华国产精华液| 一区二区欧美精品| 国产精品123区| 欧美精品久久久久久久多人混战 | 国产日韩欧美精品综合| 亚洲精品成人在线| 国产成人免费高清| 911精品国产一区二区在线| 中文字幕日韩欧美一区二区三区| 蜜臀91精品一区二区三区 | 欧洲日韩一区二区三区| 久久久777精品电影网影网| 五月天亚洲婷婷| 色呦呦网站一区| 国产亚洲欧美一区在线观看| 日本欧美大码aⅴ在线播放| 91小视频在线| 国产精品乱人伦中文| 狠狠狠色丁香婷婷综合激情| 欧美日韩黄色一区二区| 亚洲日本乱码在线观看| 国产精品亚洲综合一区在线观看| 91精品国产免费久久综合| 亚洲激情自拍偷拍| 99视频精品在线| 欧美激情一区二区在线| 蜜桃视频在线观看一区二区| 欧美午夜寂寞影院| 一区二区三区产品免费精品久久75| 国产高清不卡一区二区| 欧美第一区第二区| 蜜芽一区二区三区| 欧美精品乱人伦久久久久久| 亚洲一区二区欧美日韩| 色中色一区二区| 亚洲视频综合在线| 色综合中文字幕国产| 亚洲国产精品麻豆| 91在线观看成人| 中文字幕在线免费不卡| 成人av在线播放网址| 国产日韩欧美在线一区| 国产经典欧美精品| 久久综合成人精品亚洲另类欧美| 日韩av电影免费观看高清完整版| 欧美男生操女生| 奇米精品一区二区三区在线观看| 在线播放日韩导航| 另类成人小视频在线| 欧美va亚洲va| 国产成人一区二区精品非洲| 国产欧美综合在线| 97se亚洲国产综合自在线观| 亚洲精品中文在线影院| 欧美私人免费视频| 婷婷成人激情在线网| 欧美一级高清片| 久久99精品一区二区三区 | 国产91丝袜在线播放0| 中文字幕第一区二区| 91片黄在线观看| 香蕉乱码成人久久天堂爱免费| 欧美精品免费视频| 激情欧美日韩一区二区| 中文字幕成人在线观看| 色婷婷av一区二区三区之一色屋| 亚洲国产精品一区二区尤物区| 欧美精品乱码久久久久久| 国内精品伊人久久久久av一坑| 国产精品日日摸夜夜摸av| 91黄视频在线观看| 久久国产三级精品| 亚洲欧美影音先锋| 欧美一级生活片| 不卡一卡二卡三乱码免费网站|