⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uilistw.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 3 页
字号:
               pre[2]=(Precent%10)+'0';
               pre[3]='%';
               pre[4]=0;
              DrawStringGbkEx((UINT16)(win->x+WListObj->ItemLeft+250) ,(UINT16)(win->y+2+(WListObj->Itemheight*j+WListObj->TitleHeight)) , 200 , (char*)pre , Font16X16, &color , 0 );
              }
             }
                           //*/
            if (win->style&WES_Unicode)
            {

           
                if ((win->style&WES_Scroll) && (i == WListObj->CurrItemIndex))
                {
                    INT16U StrLen = MeasureStringPixLen((FileList->pText), Font16X16);
                    if (StrLen > 300 /*&& !(win->windowState &WST_DEACTIVE)*/ ) //080701,huangsl,用于解决瞬时无显示的问题.
                    {
                        WListObj->pScrollTxtWin->style |= WS_ACTIVE;
                        WListObj->pScrollTxtWin->x = (UINT16)(win->x + WListObj->ItemLeft + 20);
                        WListObj->pScrollTxtWin->y = (UINT16)(win->y + 2 + (WListObj->Itemheight * (WListObj->CurrItemDispLine - 1) + WListObj->TitleHeight));

                        //WindowSendMessage(WListObj->pScrollTxtWin,WM_SetTxt,(WMPARAM)(FileList->pText),0);
               //         WindowSendMessage(WListObj->pScrollTxtWin, WM_PAINT, 0, 0);
                    }
                    else
                    {
                        WListObj->pScrollTxtWin->style &= (~WS_ACTIVE);
                        DrawStringEx((UINT16)(win->x + WListObj->ItemLeft + 20) , (UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)) , win->w/*200*/ , FileList->pText , Font16X16, &color , 0);
                    }
                }
                else
                    DrawStringEx((UINT16)(win->x + WListObj->ItemLeft + 20) , (UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)) , win->w/*200*/ , FileList->pText , Font16X16, &color , 0);
            }
            else
                DrawStringGbkEx((UINT16)(win->x + WListObj->ItemLeft + 20) , (UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)) , win->w/*200*/ , FileList->pText , Font16X16, &color , 0);
            j++;
        }

        nTick1 = RockGetNTick();
    }

    else
    {
        for (i = FirstLineIndx;i < EndLineIndx;i++)
        {
            ColorDesc color = {COLOR_WHITE, COLOR_WHITE, DSPM_Transp};
            UINT16 LIcon = 0;

            pItem = (ListItem*)ListGetItem(WListObj->ListList, i);
            if (i == WListObj->CurrItemIndex)
                color.forward = 0x00ffffff - color.forward;

            LIcon = (UINT16)pItem->ICON;
            //自动添加左侧选中图标
            if ((win->style&WES_MaskSel) && (i == WListObj->CurrSelItemIndex))
                LIcon = BID_Select12;

            DrawBmpIdEx((UINT16)(win->x + WListObj->ItemLeft),
                        (UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)),
                        LIcon, NULL, DSPM_Transp);
            /*DrawPic((UINT16)(win->x+WListObj->ItemLeft),(UINT16)(win->y+2+(WListObj->Itemheight*j+WListObj->TitleHeight)),pItem->ICON);*/
            //箭头
            if (pItem->ICON&0xFFFF0000)
            {
                if (WListObj->CurrItemDispLine == (j + 1))
                    DrawBmpIdEx(WListObj->ArrowSel.X, (UINT16)(win->y + (WListObj->Itemheight*j + WListObj->TitleHeight)), WListObj->ArrowSel.BmpID, NULL, DSPM_Transp);
                else
                    DrawBmpIdEx(WListObj->Arrow.X, (UINT16)(win->y + (WListObj->Itemheight*j + WListObj->TitleHeight)), WListObj->Arrow.BmpID, NULL, DSPM_Transp);
            }
            DrawStringIdEx((UINT16)(win->x + WListObj->ItemLeft + 20) , (UINT16)(win->y + 2 + (WListObj->Itemheight*j + WListObj->TitleHeight)) , 200 , pItem->Text , Font16X16, &color , 0);
            j++;
        }

    }

    WIN_CLEARPAIT(win);
    //TR("List Paint Time %d",nTick0-nTick1);



    return TRUE;
}




/*----------------------------------------------------------------------
Name  :  ListWinCreate
Desc  :  列表框(弹出菜单)创建消息
Params:
Return:  处理结果
Author:  Lingzj
Date  :  070830
----------------------------------------------------------------------*/
UINT32 ListWinCreate(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_List *WListObj = NULL;
// UILISTFTABLE Fun;
    //TR("Creat List--begin","");
    //NeedPrintHeapInfo(TRUE);

    WListObj = MallocClass(W_List);
    if (NULL == WListObj)
        return FALSE;
    //win->style=win->style|WES_MaskSel;  //for test
    WListObj->style = win->style | WS_TOUCHUP;

    WListObj->Itemheight = 20;    /*条目高度*/
    WListObj->ItemLeft = 20;     /*条目左缩进*/
    WListObj->TitleHeight = 2;//4       /*标题高度*/

    WListObj->TitleText = win->CaptionID;  /*标题文本*/
    WListObj->IconBackground = win->BmpID; /*背景图片*/
    WListObj->IconItemSelect.BmpID = win->BmpID + 1; //选中条图片
    WListObj->IconItemSelect.X = win->x;
    WListObj->IconItemSelect.Y = win->y;//+WListObj->Itemheight;

    WListObj->Arrow.BmpID = BID_Jiantou1;  /*右侧箭头未选中图片*/
    WListObj->Arrow.X = 297;     /*箭头位置*/
    WListObj->ArrowSel.BmpID = BID_Jiantou2; /*右侧选中箭头*/
    WListObj->ArrowSel.X = 297;
#if defined( GUI_DLIST ) //071210,huangsl,由于 某些项目没有这个需求, 因此增加 改编译开关.

    if (win->style&WES_Oppoleft)
    {
        WListObj->Itemheight = 25;    /*条目高度*/
        WListObj->ItemLeft = 5;     /*条目左缩进*/
        WListObj->TitleHeight = 20;//4       /*标题高度*/
        WListObj->TitleText = win->CaptionID;  /*标题文本*/
        WListObj->IconBackground = 0; /*背景图片*/
        WListObj->IconItemSelect.BmpID = BID_listselectfouc; //选中条图片
        WListObj->IconItemSelect.X = win->x;
        WListObj->IconItemSelect.Y = win->y;   //+WListObj->Itemheight;
        WListObj->Arrow.BmpID = BID_Jiantou1;  /*右侧箭头未选中图片*/
        WListObj->Arrow.X = 297;     /*箭头位置*/
        WListObj->ArrowSel.BmpID = BID_Jiantou2; /*右侧选中箭头*/
        WListObj->ArrowSel.X = 297;
    }
    if (win->style&WES_OppoRight)
    {
        WListObj->Itemheight = 25;    /*条目高度*/
        WListObj->ItemLeft = 5;     /*条目左缩进*/
        WListObj->TitleHeight = 20;//4      /*标题高度*/
        WListObj->TitleText = win->CaptionID;  /*标题文本*/
        WListObj->IconBackground = 0; /*背景图片*/
        WListObj->IconItemSelect.BmpID = BID_listselectright; //选中条图片
        WListObj->IconItemSelect.X = win->x;
        WListObj->IconItemSelect.Y = win->y;   //+WListObj->Itemheight;
        WListObj->Arrow.BmpID = BID_Jiantou1;  /*右侧箭头未选中图片*/
        WListObj->Arrow.X = 297;     /*箭头位置*/
        WListObj->ArrowSel.BmpID = BID_Jiantou2; /*右侧选中箭头*/
        WListObj->ArrowSel.X = 297;
    }
#endif
    WListObj->WinFullLine = (win->h - WListObj->TitleHeight) / WListObj->Itemheight; /*一屏可显示的行数*/
    WListObj->CurrItem = NULL;    /*当前条目指针*/
    WListObj->CurrItemIndex = 0;    /*当前条目ID*/
    WListObj->CurrSelItemIndex = 0;
    WListObj->MaxItemIndex = 0;    /*添加的总条目数*/
    WListObj->CurrItemDispLine = 1;   /*当前条目所在行*/
    WListObj->ListList = ListCreate(LS_NONE, NULL); /*创建动态列表*/

    if (NULL == WListObj->ListList)
        return FALSE;
    if ((win->style&WES_FileList) && (win->style&WES_Unicode) && (win->style&WES_Scroll))
    {
        WListObj->pScrollTxtWin = WindowCreateEx(win ,
                                  WS_TICK | WS_CHILDS | WES_ScrollLeftRight,
                                  WID_ScrollTxt2,
                                  0, 0,
                                  win->w - (WListObj->ItemLeft * 5) / 2, 16,
                                  0,
                                  0,
                                  0,
                                  0,
                                  WinScrollTextMap,
                                  NULL);
    }
    win->Data = WListObj;
    //TR("Creat List--Ok","");

//  if(win->style&WS_TranspHalf)
//   DspTskUpdateInit(DTSC_FRAMETRANS);
    return TRUE;
}



/*----------------------------------------------------------------------
Name  :  ListWinDestroy
Desc  :  列表框(弹出菜单)关闭消息
Params:
Return:  处理结果
Author:  Lingzj
Date  :  070830
----------------------------------------------------------------------*/
UINT32 ListWinDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{


    W_List *WListObj = (W_List *)win->Data;
    //TR("Free List--begin","");

    //080602,huangsl,LJZ发现的BUG,会导致 pScrollTxtWin 窗口被关闭两次.
    //在 DESTROY里面关闭另外一个窗口,如果 LIST win 本身也是子窗口,则关闭他们的父窗口的
    //时候,pScrollTxtWin就被关闭两次(父窗口关闭子窗口一次,下面语句又一次).
    // if(WListObj->pScrollTxtWin)
    //  WindowDestroy(WListObj->pScrollTxtWin);

    ListDestroy(WListObj->ListList);

    FreeClass(WListObj);
    //TR("Free List--Ok","");
    //NeedPrintHeapInfo(FALSE);
    if (win->style&WS_TranspHalf)
        DspTskNormal();

    return TRUE;
}



/*----------------------------------------------------------------------
Name  :  ListWinSetPic
Desc  :  列表框(弹出菜单)设置图片
Params:
Return:  处理结果
Author:  Lingzj
Date  :  070830
----------------------------------------------------------------------*/
UINT32 ListWinSetPic(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{

    W_List *WListObj = (W_List *)win->Data;
    UINT16*pID = (UINT16*)lParam;
    IconType Type = wParam;

    switch (Type)
    {

        case Icon_Background:
            WListObj->IconBackground = *pID;

            break;

        case Icon_ListSel:
            WListObj->IconItemSelect.BmpID = (INT16U)(INT32U)lParam;//*pID;

            break;
    }

    WindowInvalidateWindow(win);

    return TRUE;

}


/*----------------------------------------------------------------------
Name  :  ListWinSetTxt
Desc  :  列表框(弹出菜单)设置标题文本
Params:
Return:  处理结果
Author:  Lingzj
Date  :  070830
----------------------------------------------------------------------*/
UINT32 ListWinSetTxt(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{

    W_List *WListObj = (W_List *)win->Data;

    WListObj->TitleText = (UINT16)wParam;

    return TRUE;
}



/*----------------------------------------------------------------------
Name  :  ListItemCmp
Desc  :  列表条目比较
Params:
Return:  处理结果
Author:  Lingzj
Date  :  070830
----------------------------------------------------------------------*/
int ListItemCmp(ListItem* cs, ListItem* ct)
{

    if ((cs->Text == ct->Text) && (cs->ICON == ct->ICON))
        return 0;

    return -1;;
}







/*弹出菜单类消息描述表*/
BEGIN_CHILDMESSAGE_MAP(WinListProcMap , CW_TYPE_LISTBOX)
ON_MESSAGE(WM_PAINT ,   ListWinPaint)
ON_MESSAGE(WM_COMMAND,  ListWinCommand)
ON_MESSAGE(WM_DESTROY ,  ListWinDestroy)
ON_MESSAGE(WM_CREATE,   ListWinCreate)
ON_MESSAGE(WM_ListAddItem,  ListWinAddItem)
ON_MESSAGE(WM_ListChangeItem, ListWinChangeItem)
ON_MESSAGE(WM_ListDeleteItem, ListWinDeleteItem)
ON_MESSAGE(WM_KEY,    ListWinKey)
ON_MESSAGE(WM_SetPic,  ListWinSetPic)
ON_MESSAGE(WM_SetTxt,  ListWinSetTxt)
ON_MESSAGE(WM_TOUCH ,  ListWinTouch)
ON_MESSAGE(WM_MenuSetCurrLine,  ListWinSetCurrLine)
ON_MESSAGE(WM_ListGetMaxItem, ListWinGetMaxItem)
ON_MESSAGE(WM_ListGetCurItem, ListWinGetCurItemIndex)
ON_MESSAGE(WM_ListDeleteItemAll, ListWinDeleteAll)

END_MESSAGE_MAP()








⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -